node.js - 无法访问全局安装的 Node 模块

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

我尝试安装@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

我的 Node npm

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'
>

为什么我收到错误:找不到模块“@hapi/joi”?如何解决这个问题?

最佳答案

/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还有。

关于node.js - 无法访问全局安装的 Node 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58502106/

相关文章:

node.js - 如何使用 "ng e2e"对 Node 服务器而不是 webpack-dev-server 运行 Protractor 测试

linux - Linux 上的 printf 路径名

linux - 保持 mplayer 窗口打开,链接顺序视频文件

javascript - 在 Node.js res.redirect() 中包含 JSON

node.js - 更新 CloudFunctions 上的子集合

c++ - gSOAP C++ 客户端内存泄漏

Angular:升级到版本 5 错误:@angular/compiler-cli 的版本需要为 2.3.1 或更高版本。当前版本是 "5.0.0"

npm - 必须为 webpack 安装一个 CLI - 无法运行 webpack

node.js - Mongoose - 从现有数据库数据创建模型

node.js - Express 发送 base-64 编码的 png 图像