在 NodeJS 中动态要求
Require Dynamically in NodeJS
我正在 monorepo 中开发一个 CLI 包,它有一个名为 buildX
的命令:
遍历多个目录,尝试 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 导出默认值。
完全欢迎任何建议或解决方案!提前致谢
找到了基于ESLint 库的解决方案。它们有一个 util 函数,可以帮助从当前工作区导入飞行中的配置文件,而不是使用 __dirname
.
对于 require 成功后人们可能会发现的问题,例如 ES6 导入或您的节点版本不支持的任何其他功能,您可以使用 babel-register 在飞行中构建模块而不是预构建他们。
我正在 monorepo 中开发一个 CLI 包,它有一个名为 buildX
的命令:
遍历多个目录,尝试 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 导出默认值。
完全欢迎任何建议或解决方案!提前致谢
找到了基于ESLint 库的解决方案。它们有一个 util 函数,可以帮助从当前工作区导入飞行中的配置文件,而不是使用 __dirname
.
对于 require 成功后人们可能会发现的问题,例如 ES6 导入或您的节点版本不支持的任何其他功能,您可以使用 babel-register 在飞行中构建模块而不是预构建他们。