So, I am working with TypeORM and am getting an odd error when I transpile my TypeScript to JavaScript. I am receiving the following error:
(function (exports, require, module, __filename, __dirname) { import { Entity, PrimaryGeneratedColumn, ManyToOne, OneToMany, TreeChildren, TreeParent, JoinColumn, Column, Tree, TreeLevelColumn } from "typeorm";
^^^^^^
SyntaxError: Unexpected token import
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:616:28)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Function.PlatformTools.load (C:\Users\*redacted*\Workspace\experimental\*redacted*\node_modules\typeorm\platform\PlatformTools.js:126:28)
My tsconfig.json
:
{
"compilerOptions": {
"lib": [
"es5",
"es6"
],
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "./build",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"sourceMap": true
},
"exclude": [
"client"
]
}
My package.json
:
{
"name": "*redacted*",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec ts-node src/index.ts",
"start": "tsc && node ./build/index.js",
"migrate": "ts-node ./node_modules/typeorm/cli.js migration:generate"
},
"author": "*redacted*",
"license": "ISC",
"dependencies": {
"bcryptjs": "^2.4.3",
"body-parser": "^1.18.3",
"class-validator": "^0.8.5",
"express": "^4.16.3",
"jwt-simple": "^0.5.1",
"morgan": "^1.9.0",
"pg": "^7.4.3",
"reflect-metadata": "^0.1.10",
"typeorm": "0.2.5"
},
"devDependencies": {
"@types/bcryptjs": "^2.4.1",
"@types/body-parser": "^1.17.0",
"@types/express": "^4.11.1",
"@types/jwt-simple": "^0.5.33",
"@types/node": "^8.10.15",
"ts-node": "3.3.0",
"typescript": "2.5.2"
}
}
The file throwing the error:
import { Entity, PrimaryGeneratedColumn, ManyToOne, OneToMany, TreeChildren, TreeParent, JoinColumn, Column, Tree, TreeLevelColumn } from "typeorm";
import { User } from "./User";
import { Debate } from "./Debate";
@Entity()
@Tree("closure-table")
export class Comment {
@PrimaryGeneratedColumn("uuid")
id: string;
@Column()
text: string;
@ManyToOne(type => User)
user: User;
@ManyToOne(type => Debate, debate => debate.comments)
debate: Debate;
@TreeChildren()
children: Comment[];
@TreeParent()
parent: Comment;
}
What I have tried:
import (lib) from (module)
to const (lib) require (module)";
However, this causes more issues and doesn't work well.I have been googling for this issue extensively and it has left me scratching my head. Any and all help would be greatly appreciated.
Alright, I am simply dumb.
So, the ormconfig.json points your entities to your ts files in your /src folder. When you build your project, it should point to where your entities are. I did think it was odd that it was trying to reference a TS file after building.
ormconfig.json
{
"type": "postgres",
"host": "**********************",
"port": 5432,
"username": "**************",
"password": "*************",
"database": "*************",
"synchronize": true,
"logging": false,
"entities": [
// changed this
"dist/entity/*.js"
],
"migrations": [
"src/migration/**/*.ts"
],
"subscribers": [
"src/subscriber/**/*.ts"
],
"cli": {
"entitiesDir": "src/entity",
"migrationsDir": "src/migration",
"subscribersDir": "src/subscriber"
}
}
You can also use ts-node
to run typeorm, which will allow you to run ts
files, and which will allow you to avoid compiling and running separate js
files.
Per this github comment, you can do the following:
1.- Install ts-node and typescript globally:
$ npm install -g ts-node typescript
2.- Execute the typeorm command with ts-node:
$ ts-node ./node_modules/.bin/typeorm migrations:generate -n
If you're on windows, you'll have problems with that. Per this comment, you'll want to directly reference cli.js
:
ts-node node_modules\typeorm\cli.js
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With