yan*_*kee 7 typescript angular-cli angular
我有一个客户端/服务器应用程序,其中客户端是一个 angular-app。服务器确实为其提供的 API 提供了几个打字稿定义。这些定义是从项目外部文件夹加载的。到目前为止,这工作正常,但是现在我正在从 Angular 7 升级到 Angular 8(并且还将 Typescript 从 3.1 版升级到 3.5),并且当尝试使用定义中的非静态枚举时,现在会产生以下错误:
找不到模块:错误:无法解析“/path/to/server/definitions”中的“tslib”
当api.ts-file 位于 client-dir 中时,一切正常。
为什么会发生这种情况,我能做些什么?
这是一个快速脚本,用于创建要重现的最小示例:
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
Run Code Online (Sandbox Code Playgroud)
或者,手动创建示例:
export enum ApiSample { X = "X" }{"paths":{"api":["/path/to/server/api"]}到compilerOptionsApiSample.X从 angular 项目的任何文件访问npm start"importHelpers": true在 tsconfig.json 中添加的迁移器。这就是为什么它以前有效而现在不再有效的原因。"importHelpers": false在 tsconfig.json 中指定解决了这个问题,但当然这个选项是有原因的,所以这不是最终的解决方案"tslib": ["node_modules/tslib"]解决问题。这可能是最终的解决方案,尽管知道究竟发生了什么以及记录在哪里会很有趣。"tslib": ["node_modules/tslib"]因此,对于 Angular 8 和 9,添加到tsconfig.json似乎确实compilerOptions/paths可以解决问题。
在 Angular 10 中,这个问题完全消失了,不再需要解决方法。
| 归档时间: |
|
| 查看次数: |
1554 次 |
| 最近记录: |