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

标签: none

添加新评论