我和lerna有monorepo。在我的项目中,我有nodejs和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 sequelize方面正常工作。
但是当我将打字稿更改为3.7.3时,角度不起作用:
ERROR in The Angular Compiler requires TypeScript >=3.4.0 and <3.6.0 but 3.7.3 was found instead.
我该怎么解决?
我可以为您解决此错误,但是您应该分开您的项目,因为很难维护前端和后端monorepo。这不会是您最后的依赖冲突。
Angular 8.x卡在TypeScript 3.5上,但是我在网上阅读的所有内容都说它将使用最新的TypeScript 3.7进行编译,并且据报道,由于Ivy,Angular 9也将以3.7为目标。] >您必须禁用Angular编译器对TypeScript版本的强制执行:
tsconfig.json
:{
// ...
"angularCompilerOptions": {
// ...
"disableTypeScriptVersionCheck": true
}
}
这将使项目得以编译,但由于Angular 8没有定义默认导入器,因此会出现运行时错误。我们可以通过在polyfill中添加一个来解决此问题:polyfills.ts
// @ts-ignore
window.__importDefault = function(mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
稍后升级到Angular 9时,可以撤消上述操作,应使用TypeScript 3.7进行编译