我得到了错误
[cause]:错误:无法打开文件:“D:\IntelliJ IDEA***\TypeORM_DataSource。ts”。不能在模块外使用import语句
尝试运行播种机时出错
typeorm-seeding \
--dataSource 01-Source/Implementation/Elements/DataBase/TypeORM_DataSource.ts \
seed 01-Source/Implementation/Elements/DataBase/Seeders/*.ts
使用@jorgebodega/typeorm-seeding。
好吧,这是频繁的错误与ts-node,但每次的原因,因此解决方案是不同的。在我的例子中,将"type": "module"
添加到package.json
并不能解决问题。
顺便说一下,TypeORM迁移工作正常:
typeorm-ts-node-esm migration:generate ./01-Source/Implementation/Elements/DataBase/Migrations/Initialization -d ./01-Source/Implementation/Elements/DataBase/TypeORM_DataSource.ts
起因思路
在documentation中,给出了.ts
的例子:
typeorm-seeding seed -d path/to/datasource src/seeders/*.ts
因此,typeorm-seeding必须具有内置的TypeScript支持。最有可能的是使用ts-node。export
/imports
关键字的使用完全是TypeScript的基本场景。它将被翻译成不同的问题。typeorm-seeding不应该关心将输入的TypeScript转换为适当类型的模块吗?
附录
TypeScript配置
理论上,ts-node
设置应该可以解决模块类型的问题。
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"strict": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"baseUrl": "./01-Source",
"paths": {
"@CommonSolution/*": [ "./CommonSolution/*"],
/* ... */
}
},
"ts-node": {
"compilerOptions": {
"module": "CommonJS"
},
"require": [
"tsconfig-paths/register"
]
}
}
docker-compose。亚姆勒
version: "3.5"
services:
Database:
image: postgres
container_name: Example-Local-Database
ports:
- "${DATABASE_PORT}:${DATABASE_PORT}"
environment:
- "POSTGRES_PASSWORD=${DATABASE_PASSWORD}"
volumes:
- DatabaseData:/var/lib/postgresql/data
# ...
volumes:
DatabaseData:
name: Example-Local-DatabaseData
driver: local
1条答案
按热度按时间dba5bblo1#
您正在使用
而
package.json
中的"type": "module"
所做的事情是将node * 从 * commonjs模块切换到esnext,因此您现在试图将CommonJS模块导入为ESNext,这可能会导致错误尝试从ts-node compilerOptions中删除
"module": "CommonJS"
我建议尝试https://github.com/esbuild-kit/tsx作为ts-node的更现代和更稳定的替代品。在大多数情况下,它“只是工作”。