我安装了nvm
,并用它来升级node
:nvm install 4.2.1
。
我更新了.bashrc
以导出NODE_PATH=$HOME/.nvm/versions/node/v4.2.1/lib/node_modules
。
我的目标是按照these instructions安装hubot。 install命令成功: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)
当我安装每个缺少的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
?
答案 0 :(得分:1)
您的依赖项现在将最大程度地安装。就目前而言 可能的,所有依赖项,它们的依赖项,以及它们 依赖项将安装在项目的node_modules文件夹中 没有嵌套。 您只能看到彼此嵌套的模块 当两个(或更多)模块具有冲突的依赖关系时。
至于nvm ......我偶尔会遇到路径问题。它做得很好,但我不得不像你那样摆弄一点。我过去的根本原因是npm的一次重大升级(就像这里,如果这就是你所做的)或一个糟糕的.npmrc文件(哎呀...)。典型的缓存清理,卸载重新安装通常会为我修复它。
在这种情况下,初始安装是在安装nvm和升级节点之前完成的。这解决了这个问题: