设置NODE_PATH

我安装了nvm ,并用它来升级nodenvm install 4.2.1 。 我更新了.bashrc来导出NODE_PATH=$HOME/.nvm/versions/node/v4.2.1/lib/node_modules

我的目标是按照这些说明安装hubot。 安装命令成功: npm install -g hubot coffee-script yo generator-hubot

但是,安装的命令找不到他们的库:

 $ yo hubot module.js:339 throw err; ^ Error: Cannot find module 'os-tmpdir' at Function.Module._resolveFilename (module.js:337:15) at Function.Module._load (module.js:287:25) at Module.require (module.js:366:17) at require (module.js:385:17) at Object.<anonymous> (/home/john/.nvm/versions/node/v4.2.1/lib/node_modules/yo/node_modules/configstore/node_modules/osenv/osenv.js:4:16) at Module._compile (module.js:435:26) at Object.Module._extensions..js (module.js:442:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:311:12) at Module.require (module.js:366:17) 

当我安装每个缺less的lib,它被发现。 所以我最终会遇到这种情况:

 # We already have two copies of os-tmpdir, why isn't it found?? $ find /home/john/.nvm/ -name "*tmpdir*" /home/john/.nvm/versions/node/v4.2.1/lib/node_modules/generator-hubot/node_modules/os-tmpdir /home/john/.nvm/versions/node/v4.2.1/lib/node_modules/npm/node_modules/osenv/node_modules/os-tmpdir # Just install it again: $ npm install -g os-tmpdir # Now we have three copies! But it's being found. $ find /home/john/.nvm/ -name "*os-tmpdir*" /home/john/.nvm/versions/node/v4.2.1/lib/node_modules/generator-hubot/node_modules/os-tmpdir /home/john/.nvm/versions/node/v4.2.1/lib/node_modules/npm/node_modules/osenv/node_modules/os-tmpdir /home/john/.nvm/versions/node/v4.2.1/lib/node_modules/os-tmpdir 

为什么节点模块没有单个node_modules ? 是否应该有node_modules嵌套在嵌套在node_modules下的node_modules下?

从npm 3.0.0发行说明 :

现在您的依赖关系将被最大限度地安装。 只要有可能,所有的依赖关系,它们的依赖关系,以及它们的依赖关系都将被安装在项目的node_modules文件夹中,而不会嵌套。 当两个(或更多)模块具有冲突的依赖关系时,只能看到嵌套在另一个之下的模块。

至于nvm …我偶尔也遇到了path问题。 它做得相当不错,但是我必须像你一样做一些小动作。 对我来说,过去的根本原因是对npm(如这里,如果这是你所做的)或一个坏的.npmrc文件(whoops …)的重大升级。 典型的caching清理,卸载 – 重新安装的东西通常为我修复它。

在这种情况下,在安装nvm和升级节点之前完成初始安装。 这解决了这个问题:

 $ npm uninstall -g hubot coffee-script yo generator-hubot $ npm install -g hubot coffee-script yo generator-hubot