微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试从 dist 文件夹运行已编译的应用程序时,无法在模块外使用 import 语句

如何解决尝试从 dist 文件夹运行已编译的应用程序时,无法在模块外使用 import 语句

我完全不知道这里出了什么问题。 使用 npm run dev 命令可以正常工作。但是在使用 tsc 编译并尝试使用 node ./dist/server.js 运行应用程序后,我遇到了奇怪的导入错误.ts 文件夹中没有 /dist 文件,我不明白它为什么要尝试处理 /dist 文件夹中的打字稿文件。 但是,使用 ts-node ./dist/server.js 运行应用程序确实有效。

我收到的错误

(node:32696) UnhandledPromiseRejectionWarning: C:\project\src\entities\asset.entity.ts:1
import {
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (internal/modules/cjs/loader.js:984:16)
    at Module._compile (internal/modules/cjs/loader.js:1032:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
    at Module.require (internal/modules/cjs/loader.js:957:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at C:\project\node_modules\typeorm\util\DirectoryExportedClassesLoader.js:42:39
    at Array.map (<anonymous>)

tsconfig.json

{
   "compilerOptions": {
      "lib": [
         "dom","es6","es2017","esnext.asynciterable"
      ],"target": "es6","module": "commonjs","moduleResolution": "node","outDir": "./dist","emitDecoratorMetadata": true,"experimentalDecorators": true,"sourceMap": true,"esModuleInterop": true,"noUnusedLocals": true,"resolveJsonModule": true,"allowSyntheticDefaultImports": true
   },"exclude": ["node_modules"],"include": ["./src/**/*.tsx","./src/**/*.ts"]
}

asset.entity.ts

import {
  Entity,PrimaryGeneratedColumn,Column,CreateDateColumn,BaseEntity,UpdateDateColumn,ManyToOne,JoinTable,} from 'typeorm';
import { Field,ID,ObjectType } from 'type-graphql';
import User from './user.entity';

@ObjectType({ description: 'Asset Model' })
@Entity()
export default class Asset extends BaseEntity {
    @Field(() => ID)
    @PrimaryGeneratedColumn()
    id: number;
.
.
.
}

package.json

"name": "API","version": "1.0.0","description": "","main": "server.js","scripts": {
      "build": "tsc","dev": "tsnd --respawn src/server.ts","start": "node ./dist/server.js","start2": "ts-node ./dist/server.js"
   },

解决方法

我发现了问题。

我正在使用 ormconfig.json 文件进行迁移,但在开发时忘记将实体文件夹从 dist 更新为 src。

{
   "entities": [
      "src/**/*.entity{.ts,.js}" <------- This was "dist/**.*.entity{.ts,.js}
   ],"migrations": [
      "src/migration/**/*.ts"
   ],"subscribers": [
      "src/subscriber/**/*.ts"
   ],"cli": {
      "entitiesDir": "src/entities","migrationsDir": "src/migration","subscribersDir": "src/subscriber"
   }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。