You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Node.js使用绝对路径进行模块导入?

在Node.js项目中实现绝对路径导入(无额外依赖)

你的需求是在Node.js ES模块项目中,用import {thingOne, thingTwo} from 'functions/myFunctions.js'替代相对路径导入,以下是几种无需额外依赖的解决方案,适配你的WSL2 Ubuntu环境和Node.js v17.7.2版本:

前提确认

首先确保你的package.json中已经添加"type": "module"字段——因为你使用的是ES模块的import语法,必须开启ES模块模式:

{
  "type": "module"
}

方案一:使用package.json的imports字段(官方推荐)

Node.js 14.13.0及以上版本支持通过package.json的imports字段配置导入映射,这是官方标准的解决方案:

  1. 在package.json中添加如下配置:
{
  "type": "module",
  "imports": {
    "functions/*": "./functions/*.js"
  }
}
  1. 之后就可以直接使用目标语法导入模块:
import {thingOne, thingTwo} from 'functions/myFunctions.js'

方案二:创建符号链接

通过在node_modules目录下创建指向functions目录的符号链接,让Node.js将其识别为第三方模块:

  1. 在项目根目录执行终端命令:
ln -s ../functions node_modules/functions
  1. 完成后即可直接用目标语法导入,无需修改任何配置文件。
  2. 若需多人协作,可在package.json中添加postinstall脚本自动创建链接:
{
  "scripts": {
    "postinstall": "ln -sf ../functions node_modules/functions"
  }
}

方案三:启用实验性模块解析(不推荐)

ES模块模式下默认不支持NODE_PATH环境变量,通过开启实验性参数可让其生效:

  1. 在启动脚本中添加参数和环境变量,比如在package.json的scripts中配置:
{
  "scripts": {
    "start": "NODE_PATH=. node --experimental-specifier-resolution=node index.js"
  }
}
  1. 执行npm start启动项目后,即可使用目标语法导入模块。

注意:该参数为实验性特性,未来Node.js版本可能会调整或移除,仅作为临时方案使用。

为什么之前的方法无效?

  • jsconfig.json是给编辑器(如VS Code)和前端构建工具(如Webpack)用的,Node.js本身不识别该配置。
  • NODE_PATH环境变量默认仅在CommonJS模块模式下生效,ES模块模式下需开启实验性解析参数才会起作用。

内容的提问来源于stack exchange,提问作者kougami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:40:41