TypeScript编译后执行Node.js脚本提示MODULE_NOT_FOUND找不到指定文件的问题求助
TypeScript编译后执行Node.js脚本提示MODULE_NOT_FOUND找不到指定文件的问题求助
我在编译TypeScript文件后,在VS Code终端运行script.js时遇到了这个错误:
node:internal/modules/cjs/loader:1228 throw err; ^ Error: Cannot find module '/Users/<username>/projects/course tree/course_tree/scripts/script.js' at Function._resolveFilename (node:internal/modules/cjs/loader:1225:15) at Function._load (node:internal/modules/cjs/loader:1055:27) at TracingChannel.traceSync (node:diagnostics_channel:322:14) at wrapModuleLoad (node:internal/modules/cjs/loader:220:24) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:170:5) at node:internal/main/run_main_module:36:49 { code: 'MODULE_NOT_FOUND', requireStack: [] } Node.js v22.14.0
我完全搞不懂是什么导致了这个错误,已经搜过Stack但没找到适配我情况的解决方案。我刚接触TypeScript,对模块和修改tsconfig.json不太熟悉。
我的项目文件夹结构如下:
项目文件夹截图
我的tsconfig.json配置如下:
{ "compilerOptions": { "target": "es2016", "module": "Node16", "moduleResolution": "nodenext", "outDir": "./ts-out", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true }, "type": "module", "include": ["./ts-in"], "exclude": [] }
我的script.ts源文件内容是:
import * as d3 from "d3"; import Node from "./node.js"; import Course from "./course.js"; import Graph from "./graph.js" let c1 : Course = new Course("CPSC 110", 4); let c2 : Course = new Course("CPSC 210", 4); // c2.addPrequisite(c1); console.log("Hellow"); console.log(c1.courseId); c1.print_position(); c2.print_position(); // console.log(c2.prerequisites); let graph : Graph = new Graph(); graph.addNode(c1); console.log(c1.position); console.log(graph.adj_matrix); graph.addNode(c2); console.log(c2.position); console.log(graph.adj_matrix); let c3 : Node = new Course("CPSC 121", 4); graph.addNode(c3); console.log(c3.position); console.log(graph.adj_matrix); let c4 : Node = new Course("CPSC 107", 3); graph.addNode(c4); console.log(c4.position); console.log(graph.adj_matrix); let c5 : Node = new Course("CPSC 103", 3); graph.addNode(c5); console.log(c5.position); graph.addPrequisite(c5, c4); console.log(graph.adj_matrix); console.log(graph.course_nodes);
编译生成的script.js内容是:
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const course_js_1 = __importDefault(require("./course.js")); const graph_js_1 = __importDefault(require("./graph.js")); let c1 = new course_js_1.default("CPSC 110", 4); let c2 = new course_js_1.default("CPSC 210", 4); // c2.addPrequisite(c1); console.log("Hellow"); console.log(c1.courseId); c1.print_position(); c2.print_position(); // console.log(c2.prerequisites); let graph = new graph_js_1.default(); graph.addNode(c1); console.log(c1.position); console.log(graph.adj_matrix); graph.addNode(c2); console.log(c2.position); console.log(graph.adj_matrix); let c3 = new course_js_1.default("CPSC 121", 4); graph.addNode(c3); console.log(c3.position); console.log(graph.adj_matrix); let c4 = new course_js_1.default("CPSC 107", 3); graph.addNode(c4); console.log(c4.position); console.log(graph.adj_matrix); let c5 = new course_js_1.default("CPSC 103", 3); graph.addNode(c5); console.log(c5.position); graph.addPrequisite(c5, c4); console.log(graph.adj_matrix); console.log(graph.course_nodes);
最开始我给每个.ts文件都创建了d.ts文件,因为导入语句一直报语法错误。奇怪的是,当我把相对路径从../ts-out/<name-of-js-file>.js改成./<name-of-js-file>.js后,语法错误就消失了。而且我编译.ts文件的时候没遇到任何问题,错误只在输入node script.js后出现。我还试过rm -rf node_modules然后npm install,但也没用。所有模块都是我自己创建的本地模块,所以导入用的都是相对路径。之前把所有.js、.ts文件还有tsconfig.json放在同一个文件夹里的时候完全没这些问题,就是开始整理文件夹结构后才出的状况。
真心希望有人能给我指个方向,告诉我该怎么解决这个问题🙏
内容来源于stack exchange
相关产品推荐
相关产品推荐

