Syntax Error: Unexpected token { on compiled typescript
Syntax Error: Unexpected token { on compiled typescript
当我尝试 运行 我编译的打字稿代码时,出现语法错误:
\entity\Config.ts:1
(function (exports, require, module, __filename, __dirname) { import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
^
SyntaxError: Unexpected token {
但是当我 运行 带有 ts-node
和 nodemon
的打字稿代码时 运行 就可以了。
所以我进行了一些日志记录,以找出问题发生的位置,当我在 TypeORM 上点击 createConnection()
方法时,它似乎发生了。我是 Typescript 和 TypeORM 库的新手。
entity/config.ts
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
@Entity()
export class Config extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
app: String;
@Column()
endpoint: String;
@Column()
token: String;
}
server.ts
import { createConnection } from "typeorm";
// Database connected
createConnection()
.then(() => {
console.log("Test");
})
.catch(err => {
console.log(err);
});
index.ts
require("reflect-metadata");
require("dotenv/config");
require("./server");
package.json 家属
"scripts": {
"dev:server": "ts-node src",
"dev": "nodemon -e ts -w src -x npm run dev:server",
"build:server": "tsc",
"start:server": "node build/index.js",
"start": "npm run build:server && npm run start:server"
},
"keywords": [],
"author": "",
"license": "MIT",
"devDependencies": {
"@types/axios": "^0.14.0",
"@types/graphql": "^14.0.3",
"@types/node": "^10.12.18",
"@types/winston": "^2.4.4",
"nodemon": "^1.18.9",
"ts-node": "^7.0.1",
"typescript": "^3.2.2"
},
"dependencies": {
"apollo-server-express": "^2.3.1",
"axios": "^0.18.0",
"dotenv": "^6.2.0",
"express": "^4.16.4",
"graphql": "^14.0.2",
"pg": "^7.7.1",
"reflect-metadata": "^0.1.12",
"sequelize": "^4.42.0",
"typeorm": "^0.2.9",
"winston": "^3.1.0"
}
}
所以 TypeORM Slack 的一个成员(在回答这个问题时由 uladzimir 负责)解决了这个问题。问题出在我的 ormconfig 文件上。
问题:
"entities": ["src/database/entity/**/*.ts", "build/database/entity/**/*.js"],
"migrations": [
"src/database/migration/**/*.ts",
"build/database/migration/**/*.js"
],
"subscribers": [
"src/database/subscriber/**/*.ts",
"build/database/subscriber/**/*.js"
],
"cli": {
"entitiesDir": "src/entity",
"migrationsDir": "src/migration",
"subscribersDir": "src/subscriber"
}
解决方案:
"entities": ["build/database/entity/**/*.js"],
"migrations": ["build/database/migration/**/*.js"],
"subscribers": ["build/database/subscriber/**/*.js"],
"cli": {
"entitiesDir": "src/entity",
"migrationsDir": "src/migration",
"subscribersDir": "src/subscriber"
}
出于某种原因,我认为我必须出于 testing/developing 目的添加 *ts
文件,但事实并非如此,这也是导致问题的原因。我不确定为什么会导致这个问题,但如果我发现我会 post 作为对此答案的评论。
感谢大家对这个问题的帮助。
我设法通过删除 ormconfig.json
文件并在 createConnection
函数中传递数据库配置来解决这个问题。
示例:
import { User } from './entity'
// import every other entity you have
// .......
await createConnection({
type: 'sqlite',
database: 'database.sqlite',
synchronize: true,
logging: true,
entities: [
User // pass your entities in here
]
})
如果您使用的是 TypeOrm,则可以将其用作您的配置
entities: [__dirname + '/models/**/*.entity.{ts,js}'],
migrations: [__dirname + '/migrations/**/*.{ts,js}'],
subscribers: [__dirname + '/subscriber/**/*.{ts,js}'],
添加 __dirname
可以正确解析模块,具体取决于您 运行 它是在 dev(解析为 ts 版本)还是 prod(解析为 js 版本)
当我尝试 运行 我编译的打字稿代码时,出现语法错误:
\entity\Config.ts:1
(function (exports, require, module, __filename, __dirname) { import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
^
SyntaxError: Unexpected token {
但是当我 运行 带有 ts-node
和 nodemon
的打字稿代码时 运行 就可以了。
所以我进行了一些日志记录,以找出问题发生的位置,当我在 TypeORM 上点击 createConnection()
方法时,它似乎发生了。我是 Typescript 和 TypeORM 库的新手。
entity/config.ts
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
@Entity()
export class Config extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
app: String;
@Column()
endpoint: String;
@Column()
token: String;
}
server.ts
import { createConnection } from "typeorm";
// Database connected
createConnection()
.then(() => {
console.log("Test");
})
.catch(err => {
console.log(err);
});
index.ts
require("reflect-metadata");
require("dotenv/config");
require("./server");
package.json 家属
"scripts": {
"dev:server": "ts-node src",
"dev": "nodemon -e ts -w src -x npm run dev:server",
"build:server": "tsc",
"start:server": "node build/index.js",
"start": "npm run build:server && npm run start:server"
},
"keywords": [],
"author": "",
"license": "MIT",
"devDependencies": {
"@types/axios": "^0.14.0",
"@types/graphql": "^14.0.3",
"@types/node": "^10.12.18",
"@types/winston": "^2.4.4",
"nodemon": "^1.18.9",
"ts-node": "^7.0.1",
"typescript": "^3.2.2"
},
"dependencies": {
"apollo-server-express": "^2.3.1",
"axios": "^0.18.0",
"dotenv": "^6.2.0",
"express": "^4.16.4",
"graphql": "^14.0.2",
"pg": "^7.7.1",
"reflect-metadata": "^0.1.12",
"sequelize": "^4.42.0",
"typeorm": "^0.2.9",
"winston": "^3.1.0"
}
}
所以 TypeORM Slack 的一个成员(在回答这个问题时由 uladzimir 负责)解决了这个问题。问题出在我的 ormconfig 文件上。
问题:
"entities": ["src/database/entity/**/*.ts", "build/database/entity/**/*.js"],
"migrations": [
"src/database/migration/**/*.ts",
"build/database/migration/**/*.js"
],
"subscribers": [
"src/database/subscriber/**/*.ts",
"build/database/subscriber/**/*.js"
],
"cli": {
"entitiesDir": "src/entity",
"migrationsDir": "src/migration",
"subscribersDir": "src/subscriber"
}
解决方案:
"entities": ["build/database/entity/**/*.js"],
"migrations": ["build/database/migration/**/*.js"],
"subscribers": ["build/database/subscriber/**/*.js"],
"cli": {
"entitiesDir": "src/entity",
"migrationsDir": "src/migration",
"subscribersDir": "src/subscriber"
}
出于某种原因,我认为我必须出于 testing/developing 目的添加 *ts
文件,但事实并非如此,这也是导致问题的原因。我不确定为什么会导致这个问题,但如果我发现我会 post 作为对此答案的评论。
感谢大家对这个问题的帮助。
我设法通过删除 ormconfig.json
文件并在 createConnection
函数中传递数据库配置来解决这个问题。
示例:
import { User } from './entity'
// import every other entity you have
// .......
await createConnection({
type: 'sqlite',
database: 'database.sqlite',
synchronize: true,
logging: true,
entities: [
User // pass your entities in here
]
})
如果您使用的是 TypeOrm,则可以将其用作您的配置
entities: [__dirname + '/models/**/*.entity.{ts,js}'],
migrations: [__dirname + '/migrations/**/*.{ts,js}'],
subscribers: [__dirname + '/subscriber/**/*.{ts,js}'],
添加 __dirname
可以正确解析模块,具体取决于您 运行 它是在 dev(解析为 ts 版本)还是 prod(解析为 js 版本)