【发布时间】:2021-05-31 00:55:49
【问题描述】:
在 Node.js 中,有什么方法可以在不使用相对路径的情况下从同一个包中获取文件?例如,这是来自ESLint 的代码的 sn-p。
const rule = require("../../../lib/rules/accessor-pairs"),
{ RuleTester } = require("../../../lib/rule-tester");
事实上,我们必须一路走上树 ../../../ 才能到达根部,这不仅令人讨厌。它也很脆弱,因为我无法在不更新所有依赖项引用的情况下移动代码。
但不知何故,Node.js 开发人员似乎在过去 10 年中一直在使用它。除了名为require-self 的第三方依赖项之外,我在文档或堆栈溢出中找不到任何解决此问题的内容。我也找不到明确的说法,使用相对路径是文件在同一模块中需要另一个文件的唯一非 hacky 方式。
如果有一种方法可以在 ECMAScript 模块 (ESM) 中指定相对于包根目录的路径,但不能在 CommonJS (CJS) 中指定路径,反之亦然,我也想知道这一点。
需要明确的是,我认为问题没有解决方案。如果有大。否则,我正在寻找权威参考的确认。
【问题讨论】:
-
过去我通常使用捆绑器解决这个问题,例如via this config 在 Webpack 中,或在其他插件中。您提到的文件移动的其他问题通常由大多数支持 Node 的 IDE 处理。
标签: javascript node.js node-modules require