错误 [ERR_MODULE_NOT_FOUND]:找不到模块 (TypeScript/TypeOrm)

时间:2021-06-10 14:28:36

标签: typescript express typeorm

我不明白为什么它不起作用。我只是想使用带有 TypeScript/TypeOrm 的实体来打印我的数据库的内容。

主文件:

import { createConnection, getManager ,getConnectionOptions } from 'typeorm';
//import {ReleaseController} from "./controller/ReleaseController.js";
//import { attachControllers } from '@decorators/express';
import express from "express";
import { createExpressServer } from 'routing-controllers';
import "reflect-metadata";

import { Release } from "./entity/Release";

const connectionOptions = await getConnectionOptions();

console.log(connectionOptions)

await createConnection(connectionOptions).then(async connection => {

  const entityManager = getManager();   
  let releases        = await entityManager.find(Release);

  console.log("All releases from the db: ", releases);

}).catch(error => console.log(error));

const app = createExpressServer({
  //controllers: [ReleaseController], // we specify controllers we want to use
});

app.listen(3000);

实体发布:

import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";

@Entity()
export class Release {

    @PrimaryGeneratedColumn()
    release_id: number;

    @Column({ type: 'date' })
    date: string;

    @Column()
    name: string;

}

TS 配置:

  {
    "compilerOptions": {
        "module": "esnext",
        "moduleResolution": "node",
        "target": "esnext",
         
        "esModuleInterop": true,
        "noImplicitAny": true,
        "sourceMap": false,
        "allowJs": false,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "baseUrl": ".",
            "paths": {
                "*": ["node_modules/*"]
            }
    },
    "include": [ "src/**/*"],
    "logging": true,
    "logger": "file",
}

输出错误:

 node --trace-warnings .

node:internal/process/esm_loader:74
    internalBinding('errors').triggerUncaughtException(
                              ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/jp/eclipse-workspace/SingleCellSignal/src/entity/Release' imported from /home/jp/eclipse-workspace/SingleCellSignal/src/singlecellsignal.js
    at new NodeError (node:internal/errors:363:5)
    at finalizeResolution (node:internal/modules/esm/resolve:307:11)
    at moduleResolve (node:internal/modules/esm/resolve:742:10)
    at Loader.defaultResolve [as _resolve] (node:internal/modules/esm/resolve:853:11)
    at Loader.resolve (node:internal/modules/esm/loader:89:40)
    at Loader.getModuleJob (node:internal/modules/esm/loader:242:28)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:73:40)
    at link (node:internal/modules/esm/module_job:72:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}

1 个答案:

答案 0 :(得分:0)

我真的不明白。

<块引用>

node --trace-warnings --unhandled-rejections=warn --experimental-json-modules --experimental-modules --es-module-specifier-resolution=node ./dist/singlecellsignal.js

(node:38717) UnhandledPromiseRejectionWarning: Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/jp/eclipse-workspace/SingleCellSignal/dist/entity/Release.js
require() of ES modules is not supported.
require() of /home/jp/eclipse-workspace/SingleCellSignal/dist/entity/Release.js from /home/jp/eclipse-workspace/SingleCellSignal/node_modules/typeorm/util/DirectoryExportedClassesLoader.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename Release.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from /home/jp/eclipse-workspace/SingleCellSignal/package.json.

    at new NodeError (node:internal/errors:363:5)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1126:13)
    at Module.load (node:internal/modules/cjs/loader:989:32)
    at Function.Module._load (node:internal/modules/cjs/loader:829:14)
    at Module.require (node:internal/modules/cjs/loader:1013:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at /home/jp/eclipse-workspace/SingleCellSignal/node_modules/typeorm/util/DirectoryExportedClassesLoader.js:42:39
    at Array.map (<anonymous>)
    at Object.importClassesFromDirectories (/home/jp/eclipse-workspace/SingleCellSignal/node_modules/typeorm/util/DirectoryExportedClassesLoader.js:42:10)
    at ConnectionMetadataBuilder.buildEntityMetadatas (/home/jp/eclipse-workspace/SingleCellSignal/node_modules/typeorm/connection/ConnectionMetadataBuilder.js:51:160)
    at emitUnhandledRejectionWarning (node:internal/process/promises:190:15)
    at processPromiseRejections (node:internal/process/promises:238:9)
    at processTicksAndRejections (node:internal/process/task_queues:97:32)
(node:38717) Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/jp/eclipse-workspace/SingleCellSignal/dist/entity/Release.js
require() of ES modules is not supported.
require() of /home/jp/eclipse-workspace/SingleCellSignal/dist/entity/Release.js from /home/jp/eclipse-workspace/SingleCellSignal/node_modules/typeorm/util/DirectoryExportedClassesLoader.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename Release.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from /home/jp/eclipse-workspace/SingleCellSignal/package.json.

    at new NodeError (node:internal/errors:363:5)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1126:13)
    at Module.load (node:internal/modules/cjs/loader:989:32)
    at Function.Module._load (node:internal/modules/cjs/loader:829:14)
    at Module.require (node:internal/modules/cjs/loader:1013:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at /home/jp/eclipse-workspace/SingleCellSignal/node_modules/typeorm/util/DirectoryExportedClassesLoader.js:42:39
    at Array.map (<anonymous>)
    at Object.importClassesFromDirectories (/home/jp/eclipse-workspace/SingleCellSignal/node_modules/typeorm/util/DirectoryExportedClassesLoader.js:42:10)
    at ConnectionMetadataBuilder.buildEntityMetadatas (/home/jp/eclipse-workspace/SingleCellS

ignal/node_modules/typeorm/connection/ConnectionMetadataBuilder.js:51:160)

相关问题