错误[ERR_MODULE_NOT_FOUND]:找不到从build \ server.js导入的模块“ build \ app”

时间:2020-09-15 20:47:20

标签: javascript node.js 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:\Users\x\Desktop\projects\done_list\build\app' imported from C:\Users\x\Desktop\projects\done_list\build\server.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 个答案:

答案 0 :(得分:0)

我通过从package.json中删除"type": "module"并更新了tsconfig.json来解决了这个问题:

{
  "compilerOptions": {
    "target": "es6", 
    "module": "commonjs",
    "outDir": "./build",
    "rootDir": "./src",
    "strict": true,
    "moduleResolution": "node",
    "esModuleInterop": true
  }
}