gpt4 book ai didi

node.js - 如何使用 typescript 解决 lerna monorepo 中的 Sequelize 和 Angular 之间的冲突?

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:34 27 4
gpt4 key购买 nike

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

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 端工作正常。

但是当我将 typescript 更改为 3.7.3 时, Angular 不起作用:

ERROR in The Angular Compiler requires TypeScript >=3.4.0 and <3.6.0 but 3.7.3 was found instead.

我可以做什么来解决这个问题?

最佳答案

我可以为您修复此错误,但您应该分开您的项目,因为维护前端和后端单一存储库很困难。这不会是您最后一次依赖冲突。

Angular 8.x 停留在 TypeScript 3.5 上,但我在网上读到的所有内容都说它可以使用最新的 TypeScript 3.7 进行编译ok,据报道 Angular 9 也将针对 3.7,因为 Ivy 。

您必须禁用 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 进行编译

关于node.js - 如何使用 typescript 解决 lerna monorepo 中的 Sequelize 和 Angular 之间的冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59269451/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com