Node.js 18.7.0无法找到全局安装的npm 8.18.0模块求助
全局安装jsonpath后Node.js无法找到模块的解决办法
问题场景
Node.js版本18.7.0,npm版本8.18.0,已通过npm install -g jsonpath全局安装jsonpath@1.1.1,执行npm -g list能看到模块,但运行包含let jp = require('jsonpath')的app.js时,抛出MODULE_NOT_FOUND错误。具体操作及报错如下:
$ npm install -g jsonpath … $ npm -g list /usr/local/lib ├── @aws-amplify/cli@9.2.1 ├── jsonpath@1.1.1 └── npm@8.18.0 $ node app.js node:internal/modules/cjs/loader:959 throw err; ^ Error: Cannot find module 'jsonpath' Require stack: - /Users/user/Code/project/js/app.js at Module._resolveFilename (node:internal/modules/cjs/loader:956:15) at Module._load (node:internal/modules/cjs/loader:804:27) at Module.require (node:internal/modules/cjs/loader:1022:19) at require (node:internal/modules/cjs/helpers:102:18) at Object.<anonymous> (/Users/user/Code/project/js/app.js:1:10) at Module._compile (node:internal/modules/cjs/loader:1120:14) at Module._extensions..js (node:internal/modules/cjs/loader:1174:10) at Module.load (node:internal/modules/cjs/loader:998:32) at Module._load (node:internal/modules/cjs/loader:839:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) { code: 'MODULE_NOT_FOUND', requireStack: [ '/Users/user/Code/project/js/app.js' ] } Node.js v18.7.0
解决方法
1. 本地安装模块(推荐)
Node.js默认优先查找项目本地node_modules目录,全局模块可能因路径映射问题无法被本地项目识别,直接在项目目录执行:
npm install jsonpath
安装完成后重新运行node app.js即可。
2. 配置NODE_PATH环境变量
临时生效:
- 先获取全局模块根路径:
输出示例:npm root -g/usr/local/lib/node_modules - 设置环境变量并运行脚本:
export NODE_PATH=$(npm root -g) && node app.js
永久生效(macOS/Linux):
将以下内容添加到~/.bashrc或~/.zshrc文件末尾:
export NODE_PATH=$(npm root -g)
执行source ~/.zshrc(对应你使用的shell)使配置生效。
注意:Node.js v12及以上版本官方不再推荐使用NODE_PATH,此方法作为临时替代方案。
3. 直接引用全局模块绝对路径
- 获取jsonpath的全局安装路径:
输出示例:npm list -g jsonpath/usr/local/lib/node_modules/jsonpath - 修改app.js中的引用代码:
let jp = require('/usr/local/lib/node_modules/jsonpath')
此方法缺点是路径固定,更换环境需修改代码,不推荐长期使用。
内容的提问来源于stack exchange,提问作者XDR
相关产品推荐
相关产品推荐

