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

如何为Koa应用配置自动导入?解决ERR_MODULE_NOT_FOUND报错

解决Koa应用中ES模块绝对路径导入报错问题

问题描述

启动Koa应用时,使用绝对路径导入模块:

import { user} from 'models/index.js'

出现报错:

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'models' imported from D:\portfolio\сlevertec\app\server\src\database\postgres\index.js

改用相对路径import { user} from '../../models/index.js'则能正常运行,且编辑器悬停models/index.js时可正确识别对应文件路径d:/portfolio/сlevertec/app/server/src/models/index,说明文件实际存在。

项目结构

- server/
  - src/
    - database/
       - postgres/
          - index.js
    - models/
       - index.js
       - User.js
  - jsconfig.json
  - package.json

现有配置与代码

jsconfig.json:

{
  "compilerOptions": {
    "baseUrl": "src",
    "target": "ES6",
    "module": "ES6",
    "checkJs": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true
  },
  "paths": {
    "models/*": ["models/*"]
  },
  "include": ["src"]
}

src/database/postgres/index.js:

import { user} from 'models/index.js'
import sequelize from './instance.js'

const User = sequelize.define('User', user)

src/models/index.js:

export { default as user } from './User.js'

解决方案

注意:jsconfig.json仅为编辑器提供路径提示,Node.js运行时不会读取该配置,需通过以下方式解决:

方案1:使用package.json的exports字段(Node.js原生支持,推荐)

在server/package.json中添加exports配置,定义模块别名:

{
  "type": "module",
  "exports": {
    "#models/*": "./src/models/*"
  }
}

修改导入语句为:

import { user } from '#models/index.js'

方案2:使用Node.js实验性导入映射

创建importmap.json文件:

{
  "imports": {
    "models/": "./src/models/"
  }
}

启动应用时添加参数:

node --experimental-import-maps --experimental-specifier-resolution=node --import-map ./importmap.json src/database/postgres/index.js

⚠️ 该特性为实验性,后续版本可能有变更。

方案3:通过Babel转译路径

  1. 安装依赖:
npm install babel-plugin-module-resolver --save-dev
  1. 创建babel.config.json:
{
  "plugins": [
    [
      "module-resolver",
      {
        "root": ["./src"],
        "alias": {
          "models": "./src/models"
        }
      }
    ]
  ]
}
  1. 使用babel-node启动应用:
babel-node src/database/postgres/index.js

或配置打包脚本,通过Babel转译后再运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:25:22