首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Node.js:以编程方式设置NODE_PATH

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

Stack Overflow用户
提问于 2014-01-26 10:42:59
回答 2查看 7.5K关注 0票数 13

我想在Node.js中动态加载文件,这带来了一个问题,节点在调用模块的node_modules中查找,而不是在正在加载的文件的node_modules中查找。

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

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

EN

回答 2

Stack Overflow用户

发布于 2015-11-29 05:26:54

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

代码语言:javascript
运行
复制
process.env.NODE_PATH = "your/path";
require("module").Module._initPaths();

但是,当你升级你的节点时,一定要注意,以免他们改变它的工作方式。

票数 32
EN

Stack Overflow用户

发布于 2014-01-26 15:52:01

由于vm.runInNewContext()不知道您当前的上下文,也没有给出它自己的新的“全局”上下文,我假设以下方法可以工作:

代码语言:javascript
运行
复制
var sb = { process: { env: { NODE_PATH: '/my/path/' }}};
vm.runInNewContext('process.env', sb);
// return: { NODE_PATH: '/my/path/' }

除非我漏掉了什么。如果是的话,你能更详细地解释一下吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21358994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档