NPM全球安装“找不到模块”

我写了一个模块,刚才我发表到npm(https://npmjs.org/package/wisp)

所以它从命令行安装很好:

$ npm i -g wisp

但是,当我从命令行运行它,我不断得到一个错误,没有安装乐观主义者:

 $ wisp Error: Cannot find module 'optimist' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:362:17) at require (module.js:378:17) at Object.<anonymous> (/usr/local/lib/node_modules/wisp/wisp:12:10) at Object.<anonymous> (/usr/local/lib/node_modules/wisp/wisp:96:4) at Module._compile (module.js:449:26) at Object.exports.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:68:25) at compileScript (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:135:29) at fs.stat.notSources.(anonymous function) (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:110:18) 

但是,我已经在package.json中指定了一个依赖:

 { "name": "wisp", "author": "Brendan Scarvell <bscarvell@gmail.com>", "version": "0.1.0", "description": "Global nodejs file server", "dependencies": { "optimist": "~0.3.4" }, "repository": "git://github.com/tehlulz/wisp", "bin": { "wisp" : "./wisp" } } 

有谁知道该怎么做才能让这个运行? 我知道它与bin部分添加到bin可执行文件和该目录中的node_modules是空的。 不知道如何解决这个问题。

对于其他人遇到这个问题,我有这个问题,因为我的npm安装到一个不在我的NODE_PATH

 [root@uberneek ~]# which npm /opt/bin/npm [root@uberneek ~]# which node /opt/bin/node [root@uberneek ~]# echo $NODE_PATH 

我的NODE_PATH是空的,运行npm install --global --verbose promised-io显示它安装到/opt/lib/node_modules/promised-io

 [root@uberneek ~]# npm install --global --verbose promised-io npm info it worked if it ends with ok npm verb cli [ '/opt/bin/node', npm verb cli '/opt/bin/npm', npm verb cli 'install', npm verb cli '--global', npm verb cli '--verbose', npm verb cli 'promised-io' ] npm info using npm@1.1.45 npm info using node@v0.8.4 [cut] npm info build /opt/lib/node_modules/promised-io npm verb from cache /opt/lib/node_modules/promised-io/package.json npm verb linkStuff [ true, '/opt/lib/node_modules', true, '/opt/lib/node_modules' ] [cut] 

我的脚本在require('promised-io/promise')上失败:

 [neek@uberneek project]$ node buildscripts/stringsmerge.js module.js:340 throw err; ^ Error: Cannot find module 'promised-io/promise' at Function.Module._resolveFilename (module.js:338:15) 

我可能使用configure --prefix=/opt从源代码安装了node和npm。 我不知道为什么这使他们无法find已安装的模块。 目前的修复是在正确的目录下指向NODE_PATH:

 export NODE_PATH=/opt/lib/node_modules 

我的require('promised-io/promise')现在成功了。

将此添加到prog(mac)的开头:

module.paths.push('/usr/local/lib/node_modules');

默认情况下,节点不会在/ usr / local / lib / node_module内部查看加载全局模块的内容。 请参阅http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders中介绍的模块加载;

因此,要么1)将/ usr / local / lib / node_module添加到NODE_PATH并将其导出;或者2)将安装的节点模块复制到/ usr / local / lib / node。 (正如加载模块节点的链接中所述,将在此path中search,并将工作)

对于一些(像我),没有别的工作,试试这个:

 brew cleanup brew link node brew uninstall node brew install node 

希望它可以帮助别人:)

我得到了“乐观主义者”模块错误,我只是“npm安装”来解决它。 去了那个错误。

https://github.com/mbloch/mapshaper/issues/12

$ vim /etc/profile.d/nodejs.sh

 NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript export NODE_PATH="$NODE_PATH" 

root下运行Ubuntu的testing服务器上有同样的问题。 然后使用useradd -m myuser创build一个新用户,并以useradd -m myuser nvm 安装一切 ( nvmnode ,软件包)。 现在它工作正常。

在Windows上,如果你只是做了一个干净的安装,你得到这个,你需要吹走\ AppData \ Roaming npmcaching

对于Windows,从Nodejs无法find安装在Windows上的模块? 对我来说,工作是运行npm链接

 npm link wisp 

在我的情况下, nodenpm都在相同的path( /usr/bin )。 NODE_PATH是空的,因此npm将全局模块放置在/usr/lib/node_modules ,其中require(...)成功find它们。 唯一的例外是npm模块,与nodejs包一起提供。 由于我使用的是64位系统,因此它被放置在/usr/lib64/node_modules 。 这不是在空的NODE_PATH和从/usr/bin启动节点的情况下需要(…)search的地方。 所以我有两个select:

  • /usr/lib64/node_modules/npm/usr/lib/node_modules/npm
  • 将模块从/usr/lib/node_modules/*/usr/lib64/node_modules/并设置NODE_PATH=/usr/lib64/node_modules

两者都工作。 我正在使用OpenSUSE 42.1和更新存储库中的nodejs包。 版本是4.4.5。

我以简单的方式做了这个…

  1. 从控制面板卸载节点[Windows 7]
  2. 再次安装节点
  3. 安装量angular器npm install --global --verbose protractor
    更新网页驱动pipe理器。

对我来说工作得很好。

希望这可以帮助你…

我有这个request-promise问题。 在我的情况下,取代:

 npm install request-promise --global 

 npm install request-promise --cli 

工作( 来源 )

另外,尝试设置环境variables

 NODE_PATH=%AppData%\npm\node_modules 

我有同样的错误作为OP,但挖通过日志,我可以看到sh: node: command not found

事实certificate,/ usr / bin / node程序(符号链接)不再安装apt install nodejs 。 一旦symlinked /usr/bin/node' to nodejs , npm install -g @ angular / cli`成功。

在debian上安装的正确方法是apt install nodejs-legacy