#javascript #node.js #typescript
#javascript #node.js #typescript
Вопрос:
Я использую typescript в проекте узла. Чтобы упростить и прояснить ситуацию, структура проекта выглядит следующим образом:
--src
|-- server.ts
|-- app.ts
--build
|-- server.js
|-- app.js
server.ts:
import { app } from "./app";
const port = process.env.PORT || 5000;
app.listen(port, () => {
console.log(`Server listens on 127.0.0.1:${port}`);
});
app.ts:
import express, { Express } from "express";
import bodyParser from "body-parser";
import { routes } from "./routes/index";
const app: Express = express();
app.use(bodyParser.json());
app.use("/", routes);
export {
app,
};
tsconfig.json:
{
"compilerOptions": {
"target": "es6",
"module": "es2015",
"outDir": "./build",
"rootDir": "./src",
"strict": true,
"moduleResolution": "node",
"esModuleInterop": true
}
}
package.json:
"scripts": {
"build": "tsc",
"start": "nodemon build/server",
"test": "jest"
},
"type": "module",
.
.
.
Я выполняю, npm run build
затем я запускаю npm start
, я получил эту ошибку:
internal/process/esm_loader.js:74
internalBinding('errors').triggerUncaughtException(
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:UsersxDesktopprojectsdone_listbuildapp' imported from C:UsersxDesktopprojectsdone_listbuildserver.js
at finalizeResolution (internal/modules/esm/resolve.js:270:11)
at moduleResolve (internal/modules/esm/resolve.js:667:10)
at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:778:11)
at Loader.resolve (internal/modules/esm/loader.js:85:40)
at Loader.getModuleJob (internal/modules/esm/loader.js:229:28)
at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:51:40)
at link (internal/modules/esm/module_job.js:50:36) {
code: 'ERR_MODULE_NOT_FOUND'
}
Как я могу это исправить?
ОС: Windows 10
Узел: 14.9.0
Ответ №1:
Я решил проблему, удалив "type": "module"
из package.json и обновив tsconfig.json:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"outDir": "./build",
"rootDir": "./src",
"strict": true,
"moduleResolution": "node",
"esModuleInterop": true
}
}
Комментарии:
1. Привет, приятель! Это не отвечает на суть вопроса.