我写了我发布到故宫前一刻模块(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和在该目录是空的node_modules做。 不知道如何解决这个问题。
Answer 1:
对于别人运行到这一点,我有这个问题,因为我的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)
我大概从安装使用源节点和NPM configure --prefix=/opt
。 我不知道为什么这使得他们无法找到安装的模块。 现在的解决方法是在正确的目录NODE_PATH点:
export NODE_PATH=/opt/lib/node_modules
我的require('promised-io/promise')
现在成功了。
Answer 2:
它添加到PROG(MAC)的开头:
module.paths.push('/usr/local/lib/node_modules');
Answer 3:
默认情况下,节点不看在/ 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目录/节点。 (如链接,加载模块节点解释将在此路径搜索,并将努力)
Answer 4:
对于一些(像我)没有别的工作,试试这个:
brew cleanup
brew link node
brew uninstall node
brew install node
希望它可以帮助别人:)
Answer 5:
我得到了“乐天派”模块错误,我只是没有“故宫安装”来解决这个问题。 过了这个错误。
https://github.com/mbloch/mapshaper/issues/12
Answer 6:
我有这个问题的request-promise
。 在我的情况下,更换:
npm install request-promise --global
同
npm install request-promise --cli
工作( 源 )
此外,尝试设置环境变量
NODE_PATH=%AppData%\npm\node_modules
Answer 7:
$ VIM /etc/profile.d/nodejs.sh
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
export NODE_PATH="$NODE_PATH"
Answer 8:
对运行测试服务器中的一个同样的问题, Ubuntu
下root
。 然后创建使用新的用户useradd -m myuser
和安装了一切 ( nvm
, node
,软件包), myuser
。 现在,它的正常工作。
Answer 9:
在Windows下,如果你只是做了一个干净的安装,你会得到这个你需要吹走在\应用程序数据\漫游您的NPM缓存
Answer 10:
对于Windows,从的NodeJS找不到安装的模块在Windows? 什么工作对我来说是运行NPM链接在
npm link wisp
Answer 11:
在我的情况下,两个node
和npm
都在相同的路径( /usr/bin
)。 该NODE_PATH
是空的,所以npm
放在全局模块到/usr/lib/node_modules
哪里require(...)
成功地找到它们。 唯一的例外是在npm
模块,它来了与包的NodeJS。 由于我使用64位系统,它被放置到/usr/lib64/node_modules
。 这是不是哪里需要(...)的搜索空的情况下NODE_PATH
和节点从开始/usr/bin
。 所以,我有两个选择:
- 链路
/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是。
Answer 12:
我这样做的简单的方法...
- 从控制面板的未安装节点[视窗7]
- 重新安装节点
- 安装量角器
npm install --global --verbose protractor
更新网络驱动程序管理器。
对我来说工作正常。
希望这可以帮助你....
Answer 13:
我得到这个错误Error: Cannot find module 'number-is-nan'
,而模块确实存在。 这是由于坏的/不完整的Node.js安装。
对于Windows,其他答案建议它,你需要一个干净的节点安装 :
- 卸载的Node.js
- 删除两个文件夹
npm
和npm_cache
在C:\Users\user\AppData\Roaming
- 重新启动Windows安装的Node.js
- 运行
npm init
或( npm init --yes
的默认配置 ) - 设置Windows环境变量
NODE_PATH
。 此路径就是安装软件包。 这大概就像NODE_PATH = C:\Users\user\node_modules or C:\Users\user\AppData\Roaming\npm\node_modules
- 启动一个新的CMD控制台和
npm
应该正常工作
注意 :
尝试最后的点重新安装Node.js的面前,它可以为您节省一些时间,避免重新安装所有程序包。
Answer 14:
我有同样的错误作为OP,而是通过日志,我可以看到挖sh: node: command not found
。
事实证明,在/ usr / bin中/节点程序(符号链接)不再与安装apt install nodejs
。 一旦符号链接/usr/bin/node' to
的NodeJS ,
NPM安装-g @角/ cli`成功。
要在Debian安装正确的方法是apt install nodejs-legacy
。
Answer 15:
对于Mac用户,最好使用手动安装:
为了最大限度地减少权限错误的机会,你可以配置NPM使用不同的目录。 在这个例子中,它会在你的主文件夹的隐藏目录。
备份您的计算机,然后再开始。
让全球的安装目录:
MKDIR〜/ .npm全局
配置NPM使用新目录路径:
NPM配置集前缀“〜/ .npm全局”
打开或创建〜/ .profile文件,加入这一行:
出口PATH =〜/ .npm全局/斌:$ PATH
回到命令行上,更新你的系统变量:
源〜/ .profile中
测试:全球下载包不使用sudo。
NPM安装-g jshint
相反的步骤2-4,您可以使用相应的ENV变量(例如,如果你不想修改〜/ .profile文件):
NPM_CONFIG_PREFIX=~/.npm-global
参考: https://docs.npmjs.com/getting-started/fixing-npm-permissions
Answer 16:
我不得不添加C:\用户\ {用户名} \应用程序数据\漫游\ NPM我的ENV变量,然后我可以安装的东西。
文章来源: NPM global install “cannot find module”