在 NodeJS 中动态需要



我正在处理一个 monorepo 中的 CLI 包,该包具有一个名为buildX的命令: 遍历多个目录,尝试require存在于这些目录中的某些文件中的模块。

所以基本上我会尝试做这样的事情:

buildX --source ./somewhere --target ./somewhere/else 

它应该在某个地方对这些模块执行一些操作并将其保存在目标中。

问题是:如果我有:

* - somewhere
*   | - index.js
*
*somewhere else

索引.js:

import { coolFunction } from 'cool-library';
export default coolFunction({some: object, generated: dynamically })

在执行require('./somewhere/index.js')时,有一个异常:它无法在指定的路径中找到模块。这是因为在执行__dirname时,显示的路径是存储bin的路径,而不是执行的路径。

如何以动态方式要求索引.js?我尝试了SystemJS,也尝试了 eval,也尝试了dynamic-import-support.

我只想能够执行索引.js导出默认值。

完全欢迎任何建议或解决方案!提前致谢

找到了一个基于 ESLint 库的解决方案。具有 util 功能,可帮助从当前工作区导入飞行中的配置文件,而不是使用__dirname.

对于人们在成功要求后可能会发现的问题,例如 ES6 导入或节点版本不支持的任何其他功能,您可以使用 babel-register 在飞行中构建模块,而不是预先构建它们。

相关内容

  • 没有找到相关文章

最新更新