【问题标题】:Not able to access globally installed node module无法访问全局安装的节点模块
【发布时间】:2019-10-22 10:21:12
【问题描述】:

我尝试使用命令安装@hapi/joi

alok@alok-HP-Laptop-14s-cr1xxx:~/tmp/js$ sudo npm install @hapi/joi -g
+ @hapi/joi@16.1.7
updated 1 package in 2.833s

我可以在/usr/local/lib/node_modules 中看到已安装的@hapi/joi

alok@alok-HP-Laptop-14s-cr1xxx:~/tmp/js/tmp$ npm root -g
/usr/local/lib/node_modules

alok@alok-HP-Laptop-14s-cr1xxx:~/tmp/js/tmp$ npm list -g @hapi/joi
/usr/local/lib
`-- @hapi/joi@16.1.7  

alok@alok-HP-Laptop-14s-cr1xxx:~/tmp/js$ tree /usr/local/lib/node_modules/@hapi/joi/ -L 1
/usr/local/lib/node_modules/@hapi/joi/
├── CHANGELOG.md
├── dist
├── lib
├── LICENSE.md
├── node_modules
├── package.json
└── README.md

3 directories, 4 files

但我无法访问它

alok@alok-HP-Laptop-14s-cr1xxx:~/tmp/js$ node
> var Joi = require('@hapi/joi'); // this is not working
{ Error: Cannot find module '@hapi/joi'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
    at Function.Module._load (internal/modules/cjs/loader.js:507:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18) code: 'MODULE_NOT_FOUND' }
> 
> 
> var Joi = require('/usr/local/lib/node_modules/@hapi/joi') // This is working
undefined

我的nodenpm

alok@alok-HP-Laptop-14s-cr1xxx:~/tmp/js$ which node
/usr/bin/node
alok@alok-HP-Laptop-14s-cr1xxx:~/tmp/js$ node -v
v10.15.2
alok@alok-HP-Laptop-14s-cr1xxx:~/tmp/js$ npm -v
6.11.3

alok@alok-HP-Laptop-14s-cr1xxx:~/tmp/js$ echo $NODE_PATH # this shows nothing

alok@alok-HP-Laptop-14s-cr1xxx:~/tmp/js$ node
> process['env']['PATH']
'/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'
>

为什么我收到Error: Cannot find module '@hapi/joi'?如何解决这个问题?

【问题讨论】:

  • npm root -g 的输出是什么?
  • 请同时发布npm list -g @hapi/joi的输出
  • 发表有问题
  • which node 的输出是什么?
  • 更新which node 有问题

标签: node.js linux npm npm-install ubuntu-19.04


【解决方案1】:

/usr/local/lib/node_modules 添加到NODE_PATH 使其工作

# Add this line in yuor ~/.bashrc
export NODE_PATH="/usr/local/lib/node_modules:$NODE_PATH"

# Add this line in yuor ~/.bashrc
export NODE_PATH="`npm root -g`:$NODE_PATH"

// Add this line at top in your node.js script
module.paths.push('/usr/local/lib/node_modules/')

Ubuntu 20.04 上测试,这应该也适用于其他Linux distributions

【讨论】:

    【解决方案2】:

    您检查过您的用户文件夹吗?我这里有一个node_module 文件夹/Users/<username>/node_modules 它可能在里面。

    你可能不得不改变$PATH

    【讨论】:

      【解决方案3】:

      你应该使用 npm init 它会生成 package.json 然后你可以运行你的 js 文件。

      【讨论】:

        猜你喜欢
        • 2013-07-27
        • 1970-01-01
        • 2014-11-22
        • 2018-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多