我和lerna有monorepo。在我的项目中,我有nodejs和angular。
Angular使用"typescript": "~3.5.3"
。
Nodejs具有那些与sequelize一起使用的软件包:
"@types/node": "^12.12.16",
"@types/validator": "^12.0.1",
"reflect-metadata": "^0.1.13",
"sequelize": "^5.21.2",
"sequelize-typescript": "^1.1.0"
问题是我遇到了错误:
ERROR in [at-loader] ..\..\node_modules\sequelize\types\lib\transaction.d.ts:33:14
TS1086: An accessor cannot be declared in an ambient context.
根据stackoverflow answer,我需要升级到3.7.3。当我升级时,它在nodejs续集方面运行良好。
但是当我将打字稿更改为3.7.3时,角度不起作用:
ERROR in The Angular Compiler requires TypeScript >=3.4.0 and <3.6.0 but 3.7.3 was found instead.
该如何解决?
答案 0 :(得分:1)
我可以为您解决此错误,但是您应该分开项目,因为很难维护前端和后端monorepo。这不会是您最后一次依赖冲突。
Angular 8.x卡在TypeScript 3.5上,但是我在网上阅读的所有内容都说它将使用最新的TypeScript 3.7编译好,并且据报道Angular 9也将以3.7为目标常春藤的。
您必须禁用Angular编译器对TypeScript版本的强制执行:
tsconfig.json :
{
// ...
"angularCompilerOptions": {
// ...
"disableTypeScriptVersionCheck": true
}
}
这将使项目得以编译,但是由于Angular 8没有定义默认导入器,因此您会遇到运行时错误。我们可以通过在polyfills中添加一个来解决此问题
polyfills.ts :
// @ts-ignore
window.__importDefault = function(mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
稍后升级到Angular 9时,可以撤消上述操作,并且应使用TypeScript 3.7编译