【问题标题】:Require Dynamically in NodeJS在 NodeJS 中动态要求
【发布时间】:2018-10-27 21:14:24
【问题描述】:

我正在开发一个 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 导出默认值。

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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-16
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 2012-09-26
    • 1970-01-01
    相关资源
    最近更新 更多