编译过时的 Typescript 代码时出现问题

问题描述 投票:0回答:1

我对 Typescript 还很陌生;事实上,我正在尝试让别人的(旧的)Typescript 代码正常工作,但我能提供的信息有限。 基本上,网站的两个部分(即 API 和前端)在两个独立的 Docker 容器中运行。

凭借对 Docker 的一些了解(即

docker compose up
)并且几乎不了解 Typescript(我不是 Web 开发人员;更多的是 Python/C),我已经取得了一些进展,但我仍被此错误消息困扰:

1.206 yarn run v1.22.19                                                         
1.231 $ cross-env NODE_ENV=production react-scripts build                       
2.237 Creating an optimized production build...                                 
40.02 Failed to compile.                                                        
40.02 
40.02 /app/node_modules/@types/react-dom/node_modules/@types/react/ts5.0/index.d.ts
40.02 TypeScript error in /app/node_modules/@types/react-dom/node_modules/@types/react/ts5.0/index.d.ts(3289,50):
40.02 Type expected.  TS1110
40.02 
40.02     3287 |         | "transaction-currency"
40.02     3288 |         | "username";
40.02   > 3289 |     type OptionalPrefixToken<T extends string> = `${T} ` | "";
40.02          |                                                  ^
40.02     3290 |     type OptionalPostfixToken<T extends string> = ` ${T}` | "";
40.02     3291 |     type AutoFillField = AutoFillNormalField | `${OptionalPrefixToken<AutoFillContactKind>}${AutoFillContactField}`;
40.02     3292 |     type AutoFillSection = `section-${string}`;
40.02 
40.02 
40.09 info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
40.09 error Command failed with exit code 1.
------
failed to solve: process "/bin/sh -c yarn build" did not complete successfully: exit code: 1

我试图运行的代码似乎很旧。 在

package.json
中,我看到“typescript”版本为 3.9.7 。 不幸的是,由于我没有专业知识,目前无法升级它。 如果我能做到这一点,下一步可能就是升级。 但首先,我需要让它正常工作。

我环顾 Stackoverflow,发现了 this 页面。 虽然它是不同的包,但我想原因是相同的。 可能与新代码的旧编译器发生冲突。 因此,我认为解决方案可能是返回到此代码的旧版本。 因此,我将其添加到

package.json

"resolutions": {
  "@types/react-dom": "17.0.0"
}

(我根据 Typescript 3.9.7 时存在的 React-dom 版本选择了 17.0.0——大约 4 年前。)

这不起作用。 但我想知道这是我应该做的还是我应该尝试其他事情? 我有点绕这个盲区。 任何帮助或指导将不胜感激! 谢谢!

typescript docker-compose compilation package.json react-dom
1个回答
0
投票

看看你的错误:

[剪辑]@types/react/ts5.0/[剪辑]

您的代码依赖于 Typescript 5.0。

检查此处:https://www.npmjs.com/package/@types/react-dom?activeTab=versions并选择与您的 Typescript 匹配的版本。我看到你尝试过 17.0.0。这应该有效。我的猜测是你没有设置17.x版本

© www.soinside.com 2019 - 2024. All rights reserved.