cnpm的坑导致部分模块工作不正常
问题
在使用cnpm install部署项目环境以后,发现browserify工作不正常,产生如下错误:
> browserify src/ui/index.js -o dist/index.js -t [babelify browserify minifyify]
Error: Cannot find module '../../../../_is-buffer@1.1.5@is-buffer/index.js' from 'E:\Data\Projects\Git\Project\node_modules\_core-util-is@1.0.2@core-util-is\lib'
at E:\Data\Projects\Git\Project\node_modules\_resolve@1.1.7@resolve\lib\async.js:55:21
at load (E:\Data\Projects\Git\Project\node_modules\_resolve@1.1.7@resolve\lib\async.js:69:43)
at onex (E:\Data\Projects\Git\Project\node_modules\_resolve@1.1.7@resolve\lib\async.js:92:31)
at E:\Data\Projects\Git\Project\node_modules\_resolve@1.1.7@resolve\lib\async.js:22:47
at FSReqWrap.oncomplete (fs.js:123:15)
仔细分析以后,发现是isbuffer的相对路径错误了,它本身就位于node_modules下,结果前面的相对路径里有4次取上层目录,应该只取2次才对,但是找了半天不知道这个地方如何修正。
解决
一开始根本没想到是cnpm的问题,以为是模块本身的bug,于是卡了老半天,还去项目的github上发issue,然而项目的维护者也是懵逼的,他们并没有遇到这个问题。于是我从重装node、重装模块、使用npm而非cnpm挨着尝试,最终确认是使用cnpm导致的问题,使用npm install进行安装以后,就一切正常了。所以建议大家使用npm,如果遇到安装模块缓慢,可以更改源为淘宝源,但不要直接使用cnpm,免得踩到坑……
# npm设置淘宝源
npm config set registry http://registry.npm.taobao.org