[NSwag] error TS2349: Cannot invoke an expression whose type lacks a call signature.

tsconfig.json 更新 es6 Ts3 之後可能遇到 MomentJS import 報錯

這邊筆記修改樣板 (NSwag Template) 來解決此問題的步驟

先下結論

1.修改NSwag樣板檔案來符合ES6

NSwag GitHub > File.liquid

下載後把L60

mport * as moment from 'moment';

改成

mport moment from 'moment';

參照:Change momentjs import (TS)

2.修改 service.config.nswag

找到 "templateDirectory": null,

改成你放修改後的樣板的目錄

EX: "templateDirectory": "TemplateDirectory",

參照:Templates

 

總之為了使用新版Json檔案讀取,更新了TS3啟用ES6規範之類的,然後編譯發現會報錯

接著大概知道要改import但每次NSwag refresh自動生成Code都要手動改一次 覺得麻煩

最後找到改樣板可以解決這問題,目前NSwag還沒決定最終解決方案,目前就先這樣改吧

 

error TS2349: Cannot invoke an expression whose type lacks a call signature.

Type 'typeof import("node_modules/moment/moment.d.ts")' has no compatible call signatures.

參照:Typescript compilation error when using momentjs and TypeScript 3

 

PS5