在NodeJS中需要动态

时间:2018-05-17 14:37:30

标签: javascript node.js requirejs node-modules commonjs

我正在使用一个名为buildX的命令的monorepo中的CLI包: 通过几个目录,尝试require存在于这些目录的某些文件中的模块。

所以基本上我会尝试做类似的事情:

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

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

问题是: 如果我有:

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

Index.js:

import { coolFunction } from 'cool-library';

export default coolFunction({some: object, generated: dynamically })

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

我怎么能以动态的方式要求index.js?我尝试使用SystemJS,也使用eval,也使用dynamic-import-support

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

任何建议或解决方案都是非常受欢迎的!提前致谢

1 个答案:

答案 0 :(得分:0)

找到基于ESLint库的解决方案。具有util函数,有助于从当前工作空间导入航班上的配置文件,而不是使用__dirname

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