NPM全球安装“找不到模块”(NPM global install “cannot find mod

2019-06-18 07:45发布

我写了我发布到故宫前一刻模块(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:

对运行测试服务器中的一个同样的问题, Ubunturoot 。 然后创建使用新的用户useradd -m myuser和安装了一切 ( nvmnode ,软件包), myuser 。 现在,它的正常工作。



Answer 9:

在Windows下,如果你只是做了一个干净的安装,你会得到这个你需要吹走在\应用程序数据\漫游您的NPM缓存



Answer 10:

对于Windows,从的NodeJS找不到安装的模块在Windows? 什么工作对我来说是运行NPM链接在

npm link wisp


Answer 11:

在我的情况下,两个nodenpm都在相同的路径( /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:

我这样做的简单的方法...

  1. 从控制面板的未安装节点[视窗7]
  2. 重新安装节点
  3. 安装量角器npm install --global --verbose protractor
    更新网络驱动程序管理器。

对我来说工作正常。

希望这可以帮助你....



Answer 13:

我得到这个错误Error: Cannot find module 'number-is-nan' ,而模块确实存在。 这是由于坏的/不完整的Node.js安装。

对于Windows,其他答案建议它,你需要一个干净的节点安装 :

  • 卸载的Node.js
  • 删除两个文件夹npmnpm_cacheC:\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使用不同的目录。 在这个例子中,它会在你的主文件夹的隐藏目录。

  1. 备份您的计算机,然后再开始。

  2. 让全球的安装目录:

    MKDIR〜/ .npm全局

  3. 配置NPM使用新目录路径:

    NPM配置集前缀“〜/ .npm全局”

  4. 打开或创建〜/ .profile文件,加入这一行:

    出口PATH =〜/ .npm全局/斌:$ PATH

  5. 回到命令行上,更新你的系统变量:

    源〜/ .profile中

  6. 测试:全球下载包不使用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”
标签: node.js npm