我写了一个模块,我刚刚发布到npm(https://npmjs.org/package/wisp)
所以它从命令行安装很好:
$ npm i -g wisp
但是,当我从命令行运行它时,我一直收到一个错误,即没有安装optimist:
$ 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为空 . 不知道如何解决这个问题 .
16 回答
对于一些人(像我一样)没有其他工作,试试这个:
希望它可以帮助别人:)
将此添加到prog(mac)的开头:
module.paths.push('/usr/local/lib/node_modules');
对于Windows,从Nodejs cannot find installed module on Windows?起,对我来说有效的是运行npm链接
在Windows上,如果你只是进行了全新安装而你得到了这个,你需要在\ AppData \ Roaming中吹掉你的npm缓存
$ vim /etc/profile.d/nodejs.sh
对于Mac用户,最好使用手动安装:
参考:https://docs.npmjs.com/getting-started/fixing-npm-permissions
在我的情况下,
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 .
我得到了“乐观主义”模块错误,我只是做了“npm install”来解决它 . 过了那个错误 .
https://github.com/mbloch/mapshaper/issues/12
我有
request-promise
这个问题 . 在我的情况下,替换:同
工作(source)
另外,尝试设置环境变量
我有与OP相同的错误,但是通过日志我可以看到
sh: node: command not found
.事实证明,/ usr / bin / node程序(符号链接)不再与
apt install nodejs
一起安装 . 符号链接/usr/bin/node' to
nodejs,
npm install -g @ angular / cli`成功 .在debian上安装它的正确方法是
apt install nodejs-legacy
.我这样做的方式很简单......
从控制面板取消安装节点[Windows 7]
再次安装节点
安装量角器
npm install --global --verbose protractor
更新Web驱动程序管理器
对我来说很好 .
希望这可以帮助你....
我必须将C:\ Users \ \ AppData \ Roaming \ npm添加到我的env变量中然后我可以安装东西 .
在
root
下运行Ubuntu
的其中一个测试服务器上遇到同样的问题 . 然后使用useradd -m myuser
和installed everything(nvm
,node
,包)创建了一个新用户作为myuser
. 现在它工作正常 .我收到此错误
Error: Cannot find module 'number-is-nan'
,而模块实际存在 . 这是由于Node.js安装错误/不完整 .对于Windows,正如其他答案所暗示的那样,你需要一个干净的Node installation:
卸载Node.js.
删除
C:\Users\user\AppData\Roaming
中的两个文件夹npm
和npm_cache
重新启动Windows并安装Node.js.
运行
npm init
或(npm init --yes
代表default config)为
NODE_PATH
设置Windows环境变量 . 此路径是安装软件包的位置 . 它可能像NODE_PATH = C:\Users\user\node_modules or C:\Users\user\AppData\Roaming\npm\node_modules
启动一个新的cmd控制台,
npm
应该可以正常工作Note :
在重新安装Node.js之前尝试最后几点,它可以节省您一些时间并避免重新安装所有软件包 .
对于遇到此问题的其他人,我遇到了这个问题,因为我的
npm
安装到了一个不在我的NODE_PATH
上的位置 .我的NODE_PATH是空的,运行
npm install --global --verbose promised-io
表明它正在安装到/opt/lib/node_modules/promised-io
:我的脚本在
require('promised-io/promise')
失败:我可能使用
configure --prefix=/opt
从源代码安装了node和npm . 我不知道为什么这使他们无法找到已安装的模块 . 现在的修复是将NODE_PATH指向正确的目录:我的
require('promised-io/promise')
现在成功了 .默认情况下,节点不会查看/ 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 . (正如加载模块节点的链接中所解释的那样,将在此路径中搜索并将起作用)