我写了一个模块,不久前发布到npm (https://npmjs.org/package/wisp)

所以它可以从命令行安装:

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)

但是,我已经在包中指定了。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 promises -io显示它正在安装到/opt/lib/node_modules/ promises -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(' promises -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。我不知道为什么这使得他们无法找到已安装的模块。现在的修复是将NODE_PATH指向正确的目录:

export NODE_PATH=/opt/lib/node_modules

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


默认情况下,node不会在/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。 (如加载模块节点的链接中所解释的那样,将在此路径中搜索并工作)


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

module.paths.push(“/ usr /地方/ lib / node_modules”);


我得到了“乐观”模块错误,我只是做了“npm安装”来解决它。跳过了这个错误。

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


在根目录下运行Ubuntu的一台测试服务器上遇到了同样的问题。然后使用useradd -m myuser创建一个新用户,并以myuser的身份安装所有内容(nvm, node, packages)。现在工作得很好。


对于一些(像我一样)其他方法都不起作用的人来说,试试这个:

brew cleanup
brew link node
brew uninstall node
brew install node

希望它能帮助到别人:)


在windows上,如果你只是做了一个干净的安装,你需要吹掉你的npm缓存在\AppData\Roaming


对于Windows,从Nodejs无法找到安装在Windows上的模块?对我有用的是运行NPM link

npm link wisp

在我的例子中,node和npm都在同一个路径(/usr/bin)。NODE_PATH是空的,所以npm将全局模块放在/usr/lib/node_modules中,require(…)成功地找到了它们。 唯一的例外是npm模块,它随nodejs包一起提供。因为我使用的是64位系统,所以它被放置在/usr/lib64/node_modules中。这不是require(…)在空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。


vim /etc/简介$ d/nodejs.sh

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

我用简单的方法做到了这一点……

从控制面板卸载节点[Windows 7] 重新安装节点 安装量角器 NPM安装——全局——详细量角器 更新web驱动程序管理器。

对我来说没问题。

希望这对你有帮助....


下面的通用修复将适用于任何模块。例如请求-承诺。 取代

npm install request-promise --global

npm install request-promise --cli

工作(源),也适用于全局变量和继承

另外,尝试设置环境变量

NODE_PATH=%AppData%\npm\node_modules

我遇到了与OP相同的错误,但通过挖掘日志,我可以看到sh: node:命令没有找到。

原来/usr/bin/node程序(symlink)不再安装apt install nodejs。一旦符号链接/usr/bin/node' tonodejs,npm install -g @angular/cli '成功。

在debian上安装它的正确方法是安装nodejs-legacy。


我得到了这个错误:无法找到模块'number-is-nan',而模块实际存在。这是由于一个糟糕的/不完整的Node.js安装。

对于Windows,正如其他答案所建议的那样,你需要一个干净的Node安装:

卸载node . js 删除C:\Users\user\AppData\Roaming目录下的npm和npm_cache文件夹 重新启动Windows,安装Node.js 运行npm inititor (npm init——yes用于默认配置) 设置Windows环境变量“NODE_PATH”。此路径是安装包的位置。它可能是类似于enode_path = C:\Users\user\node_modules或C:\Users\user\ appdata \ roam \npm\node_modules 启动一个新的cmd控制台,npm应该可以正常工作

注意:

在重新安装Node.js之前尝试最后几点,它可以节省你一些时间,并避免重新安装所有的包。


对于Mac用户的It's Best使用手动安装:

To minimize the chance of permissions errors, you can configure npm to use a different directory. In this example, it will be a hidden directory on your home folder. Back-up your computer before you start. Make a directory for global installations: mkdir ~/.npm-global Configure npm to use the new directory path: npm config set prefix '~/.npm-global' Open or create a ~/.profile file and add this line: export PATH=~/.npm-global/bin:$PATH Back on the command line, update your system variables: source ~/.profile Test: Download a package globally without using sudo. npm install -g jshint Instead of steps 2-4, you can use the corresponding ENV variable (e.g. if you don't want to modify ~/.profile): NPM_CONFIG_PREFIX=~/.npm-global

参考资料:https://docs.npmjs.com/getting-started/fixing-npm-permissions


我必须将C:\Users\{Username}\AppData\Roaming\npm添加到我的env变量中,然后我才能安装东西。


我刚刚遇到了axios模块的这个问题。 然后我尝试了:运行rm -rf node_modules和yarn。 这很有效。


遇到同样的问题,并通过在我的zshrc中添加下面的行来解决它。 基于您的shell,您可以尝试在您的主位置中添加您的rc文件,用于bash和zsh - bashrc/zshrc文件。

export NODE_PATH="/usr/local/lib/node_modules"

如果需要直接添加到zshrc文件中,使用此命令

echo 'export NODE_PATH="/usr/local/lib/node_modules"' >> ~/.zshrc

高山/集装箱化

正如在其他地方提到的,解决方案是在你的图像中烘焙,

NODE_PATH=/usr/local/lib/node_modules/

我还在npm apk上游打开了一个问题,这样就设置好了