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

标签 node.js

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

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

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

最佳答案

要以编程方式设置 NODE_PATH,您可以在根 Node 文件 (source) 之上运行这个魔法:

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

但是在升级 Node 时要小心,以免它们改变它的工作方式。

关于Node.js:以编程方式设置 NODE_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21358994/

相关文章:

javascript - 加载 ecmascript 模块(.mjs 文件)作为 Nodejs cli 的主入口

node.js - Puppeteer 无法识别仅具有类型和类的选择器,但接受完整的选择器

node.js - 如何在快速错误处理中使用 return

javascript - 类型错误 : User is not a function

node.js - 在我的在线服务器上部署我的Messenger chatBot

javascript - Node.js 中的计时器有何特殊之处?

node.js - 如何用 Jest 模拟所需的模块功能?

javascript - 使用 Multer 将 csv 文件上传到 Node.js 时出现意外字段

javascript - 如何将参数传递给 express.js 路由器?

node.js - 执行 find() 时在 Mongoose 中调用虚方法