过去我用过app-module-path
每当我想在 Node.js 应用程序中使用相对路径时。如果我通过以下方式使用 ES 模块.mjs
格式,如何在某个目录路径变得相对的情况下具有相同的功能?
以另一种方式,我是否能够为目录分配一个别名,以便所有相对路径都相对于该别名,就像如何./
是相对于当前目录的路径的别名。
使用“导入”属性
截至 2023 年 3 月,消除 NodeJS 相对路径的一个好方法是使用imports
财产在package.json
。想要了解更多信息,请参考这篇文章:
-
如何使用项目根目录中的文件路径在 NodeJS 中导入 JavaScript 文件? https://stackoverflow.com/questions/75806206/how-to-import-javascript-files-in-nodejs-using-file-paths-from-project-root-in.
在下面的代码中,#root 是项目根目录。
(请为这个答案点赞并这个帖子 https://stackoverflow.com/questions/75806206/how-to-import-javascript-files-in-nodejs-using-file-paths-from-project-root-in如果他们帮助你。谢谢!)
对于 CommonJS 风格的 JavaScript:
// package.json
{
"imports": {
"#root/*.js": "./*.js"
}
}
// main.js:
const Source = require('#root/path/to/Source.js');
// Source.js:
module.exports = class Source {
// ...
}
对于 ECMAScript 风格的 JavaScript:
// package.json:
{
"type" : "module",
"imports": {
"#root/*.js": "./*.js"
}
}
// main.js
import { Source } from '#root/path/to/Source.js';
// Source.js:
export class Source {
// ...
}
优点:
-
不需要“导入”或“要求”任何额外的包(没有 Babel.js、没有 Webpack、没有 RequireJS)。安装 NodeJS 后,此方法开箱即用。
-
IDE 链接按预期工作(按住 Ctrl 键单击类名可直接跳转到源文件。此外,移动源文件(通过拖放)将自动更新文件路径引用。已测试WebStorm 2022.3.2
and VS Code 1.76.2
.)
-
两者都适用.mjs
(ECMAScript 模块系统)和.cjs
(CommonJS) 文件类型。请看这个参考 .cjs 和 .mjs 上的帖子。 https://stackoverflow.com/questions/57492546/what-is-the-difference-between-js-and-mjs-files
-
保留的无需修改node_modules
目录
-
无需在操作系统级别设置任何 linux 文件链接
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)