gpt4 book ai didi

javascript - TypeScript Typeorm Node模块导入错误: SyntaxError: Unexpected token {

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:26 29 4
gpt4 key购买 nike

我正在尝试使用 TypeScript 与 Express 和 Typeorm 创建一个项目。

在使用 tsc 编译后尝试使用 node dist/index.js 运行服务器时,我不断收到以下错误。

> typescript-express-boilerplate@1.0.0 start /home/yusta/Desktop/project
> npm run serve


> typescript-express-boilerplate@1.0.0 serve /home/yusta/Desktop/project
> node dist/index.js

Example index listening on port 3000!
/home/yusta/Desktop/project/src/entity/User.ts:1
(function (exports, require, module, __filename, __dirname) { import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
^

SyntaxError: Unexpected token {
at new Script (vm.js:79:7)
at createScript (vm.js:251:10)
at Object.runInThisContext (vm.js:303:10)
at Module._compile (internal/modules/cjs/loader.js:657:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)

有趣的是,运行 ts-node src/index.ts 工作正常:

Example index listening on port 3000!
Saved a new user with id: 2
Loading users from the database...
Loaded users: [ User { id: 2, email: 'hello@hello.com', password: 'password' } ]

我认为这是 tsconfig.json 的问题,但我已经将 module 设置为 commonjs,如下所示。

tsconfig.json

{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es2018",
"noImplicitAny": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*",
"src/types/*"
]
},
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
},
"include": [
"src/**/*"
]
}

package.json

{
"name": "typescript-express-boilerplate",
"version": "1.0.0",
"description": "Boilerplate project for TypeScript with ExpressJS.",
"engines": {
"node": "10.x"
},
"scripts": {
"start": "npm run serve",
"serve": "node dist/index.js",
"build": "npm run tslint && npm run build:ts",
"build:ts": "tsc",
"dev": "concurrently -k -p \"[{name}]\" -n \"TypeScript,Node\" -c \"cyan.bold,green.bold\" \"npm run watch:ts\" \"npm run watch:node\"",
"watch:node": "nodemon dist/index.js",
"watch:ts": "tsc -w",
"tslint": "tslint -c tslint.json -p tsconfig.json",
"heroku-postbuild": "npm install && npm run build"
},
"author": "",
"license": "ISC",
"dependencies": {
"bcryptjs": "^2.4.3",
"express": "^4.16.4",
"oauth2orize": "^1.11.0",
"passport": "^0.4.0",
"passport-http-bearer": "^1.0.1",
"pg": "^7.8.1",
"reflect-metadata": "^0.1.13",
"typeorm": "^0.2.14"
},
"devDependencies": {
"@types/express": "^4.16.1",
"@types/node": "^11.10.4",
"@types/oauth2orize": "^1.8.5",
"@types/passport": "^1.0.0",
"@types/passport-http-bearer": "^1.0.33",
"concurrently": "^4.1.0",
"nodemon": "^1.18.10",
"tslint": "^5.13.0",
"typescript": "^3.3.3333"
}
}

index.ts

import "reflect-metadata";
import express from "express";
import { createConnection } from "typeorm";
import { User } from "./entity/User";

createConnection().then(async connection => {
const user = new User();
user.email = "hello@hello.com";
user.password = "password";
await connection.manager.save(user);
console.log("Saved a new user with id: " + user.id);

console.log("Loading users from the database...");
const users = await connection.manager.find(User);
console.log("Loaded users: ", users);
}).catch(error => console.log(error));

// Create a new express application instance
const app: express.Application = express();

app.get("/", function (req: express.Request, res: express.Response) {
res.send("Hello World!");
});

app.listen(process.env.PORT || 3000, function () {
console.log("Example index listening on port 3000!");
});

实体/User.ts

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

@Entity()
export class User {

@PrimaryGeneratedColumn()
id: number;

@Column({
length: 30
})
email: string;

@Column()
password: string;
}

提前致谢。

编辑:

编译后的 JavaScript 代码没有 ES6 import 语句,它使用 commonjs 模块:

index.js

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const express_1 = __importDefault(require("express"));
const typeorm_1 = require("typeorm");
const User_1 = require("./entity/User");
typeorm_1.createConnection().then(async (connection) => {
const user = new User_1.User();
user.email = "hello@hello.com";
user.password = "password";
await connection.manager.save(user);
console.log("Saved a new user with id: " + user.id);
console.log("Loading users from the database...");
const users = await connection.manager.find(User_1.User);
console.log("Loaded users: ", users);
}).catch(error => console.log(error));
// Create a new express application instance
const app = express_1.default();
app.get("/", function (req, res) {
res.send("Hello World!");
});
app.listen(process.env.PORT || 3000, function () {
console.log("Example index listening on port 3000!");
});
//# sourceMappingURL=index.js.map

实体/User.js

"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
const typeorm_1 = require("typeorm");
let User = class User {
};
__decorate([
typeorm_1.PrimaryGeneratedColumn(),
__metadata("design:type", Number)
], User.prototype, "id", void 0);
__decorate([
typeorm_1.Column({
length: 30
}),
__metadata("design:type", String)
], User.prototype, "email", void 0);
__decorate([
typeorm_1.Column(),
__metadata("design:type", String)
], User.prototype, "password", void 0);
User = __decorate([
typeorm_1.Entity()
], User);
exports.User = User;
//# sourceMappingURL=User.js.map

最佳答案

在项目根目录(package.json 附近)创建 ormconfig.json。它应该包含以下内容:

{
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "test",
"password": "test",
"database": "test"
}

关于javascript - TypeScript Typeorm Node模块导入错误: SyntaxError: Unexpected token {,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54991994/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com