如何解决尝试从 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] 举报,一经查实,本站将立刻删除。