[英]How do I load a package from a package in a Lerna monorepo?
[英]How to solve conflict between sequelize and angular in lerna monorepo with typescript?
我有 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的回答,我需要升級到3.7.3。 當我升級它在 nodejs sequelize 方面工作正常。
但是當我將打字稿更改為 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.
我能做些什么來解決這個問題?
我可以為您修復此錯誤,但您應該將您的項目分開,因為維護前端和后端 monorepo 很困難。 這不會是您最后的依賴沖突。
Angular 8.x 停留在 TypeScript 3.5 上,但我在網上閱讀的所有內容都表明它可以與最新的 TypeScript 3.7 一起編譯,據報道,由於 Ivy,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 編譯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.