gpt4 book ai didi

angular - 引用外部 typescript 文件时如何避免 "Module not found: Error: Can' t resolve 'tslib' "-error?

转载 作者:行者123 更新时间:2023-12-03 13:40:42 44 4
gpt4 key购买 nike

问题

我有一个客户端/服务器应用程序,其中客户端是一个 angular-app。服务器确实为其提供的 API 提供了几个 typescript 定义。这些定义是从项目外部文件夹加载的。到目前为止,这工作正常,但是现在我正在从 Angular 7 升级到 Angular 8(并且还将 Typescript 从 3.1 版升级到 3.5),并且当尝试使用定义中的非静态枚举时,现在会产生以下错误:

Module not found: Error: Can't resolve 'tslib' in '/path/to/server/definitions'



api.ts -file 位于客户端目录中,然后一切正常。

为什么会发生这种情况,我能做些什么?

创建一个最小的可重现示例

这是一个快速脚本,用于创建要重现的最小示例:

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

或者,手动创建示例:
  • 创建一个新的 Angular 项目
  • 在文件系统中的某处创建一个文件“api.ts”,内容为 export enum ApiSample { X = "X" }
  • 在“tsconfig.json”中添加 {"paths":{"api":["/path/to/server/api"]}compilerOptions
  • 访问 ApiSample.X来自 angular 项目的任何文件
  • 运行 npm start

  • 迄今为止的发现
  • 迁移者添加 "importHelpers": true在 tsconfig.json 中。这就是为什么它以前有效而现在不再有效的原因。指定 "importHelpers": false在 tsconfig.json 中修复了这个问题,但当然这个选项是有原因的,所以这不是最终的解决方案
  • 明确指定 "tslib": ["node_modules/tslib"]解决问题。这可能是最终的解决方案,尽管知道究竟发生了什么以及记录在哪里会很有趣。
  • 最佳答案

    Angular 8&9
    因此,对于 Angular 8 和 9,似乎添加了 "tslib": ["node_modules/tslib"]compilerOptions/paths在 tsconfig.json 确实解决了问题。
    Angular 10
    在 Angular 10 中,问题完全消失了,不再需要解决方法。

    关于angular - 引用外部 typescript 文件时如何避免 "Module not found: Error: Can' t resolve 'tslib' "-error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58259660/

    44 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com