Express+TypeScript+TypeORM启动报import语法错误解决方案问询
解决方案
步骤1:修改package.json启动脚本,新增环境变量标识
给不同运行环境添加NODE_ENV标识,方便配置文件动态判断运行场景:
{ "scripts": { // 生产环境标记为production "start": "NODE_ENV=production tsc && node --unhandled-rejections=strict ./dist/app.js", // 开发环境标记为development "serve": "NODE_ENV=development nodemon app.ts", "debug": "NODE_ENV=development export DEBUG=* && npm run serve" } }
若在Windows系统下开发,需先安装
cross-env包实现跨平台环境变量注入,将上述脚本中的NODE_ENV=xxx替换为cross-env NODE_ENV=xxx即可。
步骤2:修改ormconfig.ts的entities配置,实现路径动态适配
根据环境变量自动切换实体文件加载路径,开发环境加载源码目录的.ts实体,生产环境加载dist目录的转译后.js实体:
module.exports = { type: 'mssql', host: process.env.DB_SERVER, username: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_DATABASE, port: Number(process.env.DB_PORT), // 核心修改:动态匹配实体路径 entities: process.env.NODE_ENV === 'production' ? ['dist/entities/*.js'] : ['entities/*.ts'], logging: true, synchronize: false, options: { trustServerCertificate: true }, };
可选配置:补充nodemon配置保证开发环境执行逻辑正确
若你没有单独的nodemon配置文件,可在项目根目录新增nodemon.json,明确指定ts-node作为执行器,避免异常:
{ "watch": ["**/*.ts"], "ext": "ts", "exec": "ts-node ./app.ts" }
验证
- 开发时执行
npm run serve或npm run debug,会自动加载源码目录下的.ts实体文件,保留原有调试能力 - 生产部署执行
npm start,会自动加载dist目录下的转译后.js实体文件,不会出现import语法报错
内容的提问来源于stack exchange,提问作者Ernesto G
相关产品推荐
相关产品推荐

