Node.js使用import语法时如何配置路径别名
解决方案
方案1:使用Node.js原生imports字段(无额外依赖,推荐)
Node.js v16 原生支持 ESM 模块的路径别名配置,只需要修改 package.json 即可:
// package.json { // 首先添加该字段,让项目.js文件默认按ESM规范解析 "type": "module", // 配置导入别名 "imports": { "~src/*": "./*" }, "dependencies": { // 原来的 "~src": "file:." 配置可以直接删除 } }
配置完成后即可直接在业务代码中使用别名导入:
import someCode from '~src/absolute/path/someCode';
方案2:兼容ESM+CommonJS双规范场景
如果项目还需要同时兼容旧的 require 语法,可以使用 module-alias 库实现别名复用:
- 安装依赖:
npm i module-alias - 在
package.json中添加别名配置:
{ "_moduleAliases": { "~src": "." } }
- 在项目入口文件最顶部引入注册逻辑:
import 'module-alias/register.js'; // 后续所有代码都可以正常使用~src别名导入 import someCode from '~src/absolute/path/someCode';
方案3:带构建工具的项目配置
如果你的项目使用了 vite、webpack、rollup 等构建工具,也可以直接在构建工具配置中添加别名规则,以vite为例:
// vite.config.js import { defineConfig } from 'vite'; import path from 'path'; export default defineConfig({ resolve: { alias: { '~src': path.resolve(__dirname, './') } } });
注意事项
- Node.js v16 早期版本对ESM别名的支持存在bug,建议升级到v16.15.0以上的LTS版本避免异常
- 配置
"type": "module"后如果仍需要使用CommonJS规范的文件,将对应文件后缀修改为.cjs即可正常使用require语法
内容的提问来源于stack exchange,提问作者Poyoman
相关产品推荐
相关产品推荐

