繁体   English   中英

Node.js:以编程方式设置NODE_PATH

[英]Node.js: programmatically setting NODE_PATH

我想在Node.js的动态加载文件这造成了节点看起来问题node_modules调用的模块,而不是看在的node_modules文件的加载。

我不想使用require()的原因是因为这些是插件,它们可以通过简单连接而包含在主应用程序中。 所以使用require()打破了插件。 它们必须直接加载到主应用程序上下文中,但它们也必须能够访问其本地node_modules

我使用vm.runInNewContext()来评估代码。 但是如何将NODE_PATH传递给runInNewContext()

要以编程方式设置NODE_PATH ,您可以在根节点文件( )之上运行此魔术:

process.env.NODE_PATH = "your/path";
require("module").Module._initPaths();

但是在升级节点时请保持眼睛剥落,以免它们改变它的工作方式。

由于vm.runInNewContext()不了解您当前的上下文,也没有给出自己的新“全局”上下文,因此我假设以下内容可行:

var sb = { process: { env: { NODE_PATH: '/my/path/' }}};
vm.runInNewContext('process.env', sb);
// return: { NODE_PATH: '/my/path/' }

除非我错过了什么。 如果我能告诉您更详细的信息吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM