如何解决带有打字稿的lerna monorepo中的后继和角度冲突?

问题描述 投票:1回答:1

我和lerna有monorepo。在我的项目中,我有nodejs和angular。

角使用"typescript": "~3.5.3"

Nodejs的那些软件包可与sequ​​elize一起使用:

"@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.

我该怎么解决?

node.js angular typescript lerna monorepo
1个回答
0
投票

我可以为您解决此错误,但是您应该分开您的项目,因为很难维护前端和后端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进行编译
© www.soinside.com 2019 - 2024. All rights reserved.