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

Node.js使用import出现ERR_MODULE_NOT_FOUND错误求助

问题原因与解决方法

核心原因

Node.js的ESM(ECMAScript模块)系统和CommonJS模块系统的模块解析规则存在关键差异:

  • CommonJS会读取NODE_PATH环境变量,你设置的/home/tester/node/lib/node_modules正好是全局模块的安装路径,因此require('express')能正常找到全局安装的express。
  • ESM不支持NODE_PATH,它默认只会在当前项目的node_modules目录下查找模块,不会读取NODE_PATH指定的全局路径,所以直接import express from 'express'找不到全局安装的express。

解决方法

方法1:本地安装express(推荐)

进入测试项目目录,执行本地安装命令:

cd /tmp/test
npm install express

安装完成后,直接运行node /tmp/test/test.js即可,ESM会自动从本地node_modules中加载express模块。这也是现代Node.js项目的标准做法,能避免全局模块版本冲突等问题。

方法2:通过import map指定全局模块路径

如果坚持使用全局安装的模块,可以创建importmap.json文件映射模块路径:

{
  "imports": {
    "express": "/home/tester/node/lib/node_modules/express/lib/index.js"
  }
}

然后通过以下命令运行脚本:

node --import-map=/tmp/test/importmap.json /tmp/test/test.js

这种方式需要手动维护模块路径,灵活性较差,仅适合特殊场景。

方法3:使用绝对路径导入

直接在test.js中使用全局模块的绝对路径:

import express from '/home/tester/node/lib/node_modules/express/lib/index.js'

这种方式硬编码了路径,迁移性差,不推荐使用。

内容的提问来源于stack exchange,提问作者張俊芝

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:57:43