![](/img/trans.png)
[英]Module not found: Error: Can't resolve ... when using external JS library
[英]How to avoid “Module not found: Error: Can't resolve 'tslib'”-error when referencing an external typescript file?
我有一個客戶端/服務器應用程序,其中客戶端是一個角度應用程序。 服務器確實為它提供的 API 提供了幾個打字稿定義。 這些定義是從項目外部文件夾加載的。 到目前為止,這工作正常,但是現在我正在從 Angular 7 升級到 Angular 8 (並且同時升級 Typescript 會產生從版本 3.1 到現在使用此定義的非靜態錯誤:3.5)
找不到模塊:錯誤:無法解析“/path/to/server/definitions”中的“tslib”
當api.ts
文件位於客戶端目錄中時,一切正常。
為什么會發生這種情況,我能做些什么?
這是一個快速腳本,用於創建一個最小的示例來重現:
mkdir project
cd project
ng new client --minimal=true --skipGit=true --routing=false --style=css
mkdir server
echo 'export enum ApiSample { X = "X" }' > server/api.ts
sed -i 's/"compilerOptions": {/"compilerOptions": {"paths":{"api":["..\/server\/api"]},/' client/tsconfig.json
sed -i -e "1iimport { ApiSample } from 'api';" -e "s/title = 'client';/title = 'client' + ApiSample.X;/" client/src/app/app.component.ts
cd client
npm start
或者,手動創建示例:
export enum ApiSample { X = "X" }
{"paths":{"api":["/path/to/server/api"]}
到compilerOptions
ApiSample.X
npm start
"importHelpers": true
。 這就是為什么它以前有效而現在不再有效的原因。 在 tsconfig.json 中指定"importHelpers": false
解決了這個問題,但是這個選項當然是有原因的,所以這不是最終的解決方案"tslib": ["node_modules/tslib"]
解決了這個問題。 這可能是最終的解決方案,盡管了解到底發生了什么以及記錄在哪里會很有趣。 因此,對於 Angular 8 和 9,似乎將"tslib": ["node_modules/tslib"]
添加到 tsconfig.json 中的compilerOptions/paths
確實可以解決問題。
在 Angular 10 中,問題完全消失了,不再需要解決方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.