網站搜尋

每次我嘗試在 Strapi 中新增一種集合類型時,Typescript 都會拋出錯誤


我剛安裝了最新版本的 Strapi(4.11.1),並且對這個平台還很陌生。我使用 Postgres 作為後端。一切本來進行得很順利,直到今天早上,當我試圖向現有的定義中添加一個新的集合時。起初我將它命名為「Application」,並完成了定義階段,但出現了類似這樣的錯誤:

src/api/application/controllers/application.ts:7:47 - error TS2345: Argument of type '"api::application.application"' is not assignable to parameter of type 'ContentType'.

7 export default factories.createCoreController('api::application.application');

src/api/application/routes/application.ts:7:43 - error TS2345: Argument of type '"api::application.application"' is not assignable to parameter of type 'ContentType'.

... 

Found 3 error(s).

為了簡潔起見,其他相關錯誤已被刪除。

我以為也許「Application」是一個保留關鍵字,而我沒有收到警告,所以我刪除了 src/api 中的「application」資料夾,重新開始,這次稱它為「Package」。同樣的錯誤,新名字。於是我又嘗試了一次,這次使用一個不可能是保留關鍵字的名稱——「Hutzpah」。同樣的問題。我也停止嘗試完整定義集合類型,只新增了一個名為「Name」的文字字串。同樣的問題。這是我遇到的唯一錯誤。

似乎出於某種原因,strapi 沒有將 JSON “schema”的類型介面版本添加到 types/generated/contentTypes.d.ts 中,而這個遺漏正是導致錯誤的原因,但我對 strapi 的了解不夠,因此不明白這可能是什麼原因,或者這是否是一個假線索。

任何幫助都將不勝感激。感謝您的時間。

答案#1

我今天遇到了同樣的問題。相同版本的 Strapi,並且也使用 TypeScript。你有按照這裡提到的生成 typings 嗎?https://docs.strapi.io/dev-docs/typescript#generate-typings-for-project-schemas

我猜到可能是這個問題,所以我刪除了生成的資料夾「types」及其所有內容,現在它運作正常了

答案#2

因為 TypeScript 的「types」尚未建立,所以請遵循官方指南,或者直接執行:

npm run strapi ts:generate-types --debug

對我來說效果很好。