Saw*_*oes 5 node.js es6-modules mjs
过去,app-module-path每当我想在 Node.js 应用程序中使用相对路径时,我都会使用它。如果我通过该格式使用 ES 模块.mjs,如何在某个目录路径变为相对路径的情况下具有相同的功能?
以另一种方式,我是否能够为目录分配一个别名,以便所有相对路径都相对于该别名,就像./路径的别名相对于当前目录一样。
可以为require通过猴子修补内置module模块加载的 CommonJS 模块的某些路径提供别名。
ES 模块提供了一种通过指定自定义 ES 模块加载器来更改模块加载行为的方法,如相关答案中所述。
这样根源路径(将相对于加载器位置指定)可以映射到某个别名(对于前端项目来说@是常规的):
自定义加载程序.mjs
import path from 'path';
const ROOT_PATH = new URL(path.dirname(import.meta.url) + '/src').pathname;
export function resolve(specifier, parentModuleURL, defaultResolver) {
specifier = specifier.replace(/^@/, ROOT_PATH);
return defaultResolver(specifier, parentModuleURL);
}
Run Code Online (Sandbox Code Playgroud)
其用法如下:
node --experimental-modules --loader ./custom-loader.mjs ./app.mjs
Run Code Online (Sandbox Code Playgroud)
请注意,这提供了一种对于 ES 模块来说并不自然的行为,这可能会影响 IDE 等其他工具处理此代码的方式。
| 归档时间: |
|
| 查看次数: |
16079 次 |
| 最近记录: |