如何使用全局 nodejs 模块?
How to use a global nodejs module?
当我尝试使用 esprima 时出现以下错误。有人知道如何解决这个问题吗?谢谢
$ npm install -g esprima
/usr/local/bin/esparse -> /usr/local/lib/node_modules/esprima/bin/esparse.js
/usr/local/bin/esvalidate -> /usr/local/lib/node_modules/esprima/bin/esvalidate.js
+ esprima@4.0.1
updated 1 package in 0.837s
$ cat main.js
#!/usr/bin/env node
// vim: set noexpandtab tabstop=2:
var esprima = require('esprima');
var program = 'const answer = 42';
console.log(esprima.tokenize(program));
console.log(esprima.parseScript(program));
$ node main.js
internal/modules/cjs/loader.js:960
throw err;
^
Error: Cannot find module 'esprima'
Require stack:
- /private/tmp/main.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:957:15)
at Function.Module._load (internal/modules/cjs/loader.js:840:27)
at Module.require (internal/modules/cjs/loader.js:1019:19)
at require (internal/modules/cjs/helpers.js:77:18)
at Object.<anonymous> (/private/tmp/main.js:4:15)
at Module._compile (internal/modules/cjs/loader.js:1133:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
at Module.load (internal/modules/cjs/loader.js:977:32)
at Function.Module._load (internal/modules/cjs/loader.js:877:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/private/tmp/main.js' ]
}
我认为您在全局 node_modules 中安装了 esprima
模块。
如果您想在位于 /private/temp/main.js
的 main.js 中使用 esprima
,
你应该 运行 npm install esprima
在 /private/temp/
没有 -g
编辑 - 如何要求全局模块
方式一
我假设你在 mac 系统中。
在你 运行 你的 main.js、运行 export NODE_PATH=/usr/local/lib/node_modules
之前 shell
,而不是 node.js 程序。
然后你可以通过 const esprima = require("esprima")
.
来要求全局模块
顺便说一句,全局模块的位置在不同的系统中可能会有所不同。
方式 2
在你知道你的全局模块位置后,
您可以通过 const esprima = require("/usr/local/lib/node_modules/esprima")
要求它
当我尝试使用 esprima 时出现以下错误。有人知道如何解决这个问题吗?谢谢
$ npm install -g esprima
/usr/local/bin/esparse -> /usr/local/lib/node_modules/esprima/bin/esparse.js
/usr/local/bin/esvalidate -> /usr/local/lib/node_modules/esprima/bin/esvalidate.js
+ esprima@4.0.1
updated 1 package in 0.837s
$ cat main.js
#!/usr/bin/env node
// vim: set noexpandtab tabstop=2:
var esprima = require('esprima');
var program = 'const answer = 42';
console.log(esprima.tokenize(program));
console.log(esprima.parseScript(program));
$ node main.js
internal/modules/cjs/loader.js:960
throw err;
^
Error: Cannot find module 'esprima'
Require stack:
- /private/tmp/main.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:957:15)
at Function.Module._load (internal/modules/cjs/loader.js:840:27)
at Module.require (internal/modules/cjs/loader.js:1019:19)
at require (internal/modules/cjs/helpers.js:77:18)
at Object.<anonymous> (/private/tmp/main.js:4:15)
at Module._compile (internal/modules/cjs/loader.js:1133:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
at Module.load (internal/modules/cjs/loader.js:977:32)
at Function.Module._load (internal/modules/cjs/loader.js:877:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/private/tmp/main.js' ]
}
我认为您在全局 node_modules 中安装了 esprima
模块。
如果您想在位于 /private/temp/main.js
的 main.js 中使用 esprima
,
你应该 运行 npm install esprima
在 /private/temp/
没有 -g
编辑 - 如何要求全局模块
方式一
我假设你在 mac 系统中。
在你 运行 你的 main.js、运行 export NODE_PATH=/usr/local/lib/node_modules
之前 shell
,而不是 node.js 程序。
然后你可以通过 const esprima = require("esprima")
.
顺便说一句,全局模块的位置在不同的系统中可能会有所不同。
方式 2
在你知道你的全局模块位置后,
您可以通过 const esprima = require("/usr/local/lib/node_modules/esprima")