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

IntelliSense与tsc编译正常但跨文件夹出现MODULE_NOT_FOUND错误

解决模块找不到(MODULE_NOT_FOUND)问题

问题根源

你直接导入了config的源码目录(../../config/src),编译后的JS文件会保留这个相对路径,但运行时Node会去寻找该路径下的JS文件,而非config/dist里的编译产物,同时相对路径在编译后的目录结构下也会失效。

解决方案

1. 为每个子项目配置package.json

在config文件夹下创建package.json,明确包的入口文件:

{
  "name": "@local/config",
  "main": "./dist/src/index.js",
  "types": "./dist/src/index.d.ts",
  "private": true
}

同样在js_query文件夹下创建package.json(规范项目结构):

{
  "name": "@local/js_query",
  "private": true
}

2. 配置TypeScript路径映射

修改js_query/tsconfig.json,添加路径映射让TS正确识别本地包:

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@local/config": ["../config/src"]
    },
    "moduleResolution": "node",
    // 保留原有其他配置
  }
}

3. 关联本地包(npm link)

  • 进入config目录,执行:
    npm link
    
  • 进入js_query目录,执行:
    npm link @local/config
    

这会让Node在运行时把@local/config指向本地config包的编译产物。

4. 修改导入语句

把js_query/src/index.ts里的导入改成包名形式:

import Database from 'better-sqlite3';
import { config, loadConfig } from '@local/config';
loadConfig('./config/root.json'); // 注意:此路径是相对于你执行node命令的目录,若运行编译后的文件可能需要调整为绝对路径或正确相对路径
console.log(config);

5. 按顺序编译项目

先编译config,再编译js_query,确保依赖的编译产物存在:

cd config && tsc
cd ../js_query && tsc

也可以在根目录的package.json里添加脚本简化操作:

{
  "scripts": {
    "build:config": "cd config && tsc",
    "build:js_query": "cd js_query && tsc",
    "build": "npm run build:config && npm run build:js_query"
  }
}

额外注意

运行编译后的文件时,比如执行node js_query/dist/src/index.js,loadConfig('./config/root.json')的路径是相对于当前终端的工作目录,若找不到root.json,可以改成绝对路径,或者调整为相对于编译后JS文件的路径:

import { join } from 'path';
loadConfig(join(__dirname, '../../../config/root.json'));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:42:16