node.js - SPFx Webpart - node_modules/@types/[prop types] 和 [react] index.d.ts : loads of "error TS1005" on gulp build

标签 node.js reactjs typescript gulp spfx

所以我构建了一个 spfx webpart,其中一个功能是显示链接预览。 我用了this library为了任务。我必须更改包“styled-components”的版本并更新我的“react”(16.4.18) 和“react-dom”(16.0.9) 才能正常工作。进行这些更改并运行 gulp build 后,我收到以下错误列表:

[10:21:13] [tsc] typescript version: 2.4.2
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(27,38): error TS1005: '=' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(29,46): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(29,75): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(29,99): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(31,54): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(31,78): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(31,81): error TS1109: Expression expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(31,97): error TS1109: Expression expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(31,122): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(31,130): error TS1128: Declaration or statement expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(31,138): error TS1005: ',' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(44,48): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(44,49): error TS1109: Expression expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(44,50): error TS1109: Expression expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(44,68): error TS1005: '(' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(44,69): error TS1005: ')' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(46,30): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(46,54): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/prop-types/index.d.ts(46,57): error TS1109: Expression expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2297,27): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2298,14): error TS1005: ':' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2298,28): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2299,9): error TS1109: Expression expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2300,9): error TS1005: '(' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2301,9): error TS1005: '(' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2302,5): error TS1005: '(' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2302,12): error TS1005: ')' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2314,49): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2314,76): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2314,99): error TS1005: ';' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2315,13): error TS1128: Declaration or statement expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2316,13): error TS1005: '(' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2316,17): error TS1005: ',' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2316,44): error TS1005: ',' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2316,45): error TS1005: ':' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2318,17): error TS1005: '(' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2318,21): error TS1005: ',' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2318,51): error TS1005: ',' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2318,52): error TS1005: ':' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2320,21): error TS1005: '(' expected.
[10:21:17] Error - [tsc] node_modules/@types/react/index.d.ts(2320,24): error TS1005: ')' expected.
[10:21:17] Error - 'tsc' sub task errored after 3.75 s
 exited with code 2

this github issue与我的有点相似,建议我将我的 typescript 版本更新到2.3.4或更高版本。

还有一个我目前找不到的 github 问题,建议将 typescript 版本更新到 2.8.x 或更高版本。

我的 typescript 版本是 3.1.3。我在本地(在项目的 Node 模块文件夹中)和全局安装了相同的版本。您可能已经注意到,在构建开始时我会得到输出

[tsc] typescript version: 2.4.2

我已经将“package.json”文件中与 typescript 相关的所有条目以及 yarn.lock 文件(我使用的是 yarn)更改为最初的“3.1.3”或“~3.1.3”说“2.4.1”或“2.4.2”或“~2.4.1”或“~2.4.2”。从我读到的内容来看,它与定义/声明语法相关,仅在 typescript 2.8 及更高版本中受支持。例如,有问题的行之一是:

 Error - [tsc] node_modules/@types/prop-types/index.d.ts(27,38): error TS1005: '=' expected.

export const nominalTypeHack: unique symbol;

一般来说,我对 typescript 和 node 还很陌生,所以这可能是导致我不知道如何解决这个问题的另一点。

如果需要提供更多信息,我将很乐意提供。预先感谢所有建议和答案。

最佳答案

我做了一个快速 web search并发现了几个线程(例如 12)表明 SPFx 构建系统将人们固定在旧版本的 TypeScript 上。我没有看到解决方案。

一种可能的方法是将您的代码分成与 React 交互的部分和与 SPFx 交互的部分,使用最新版本的 tsc 自行将第一部分编译为 JavaScript,并包含通过 SPFx 构建系统编译第二部分时生成的 JavaScript 文件。我对 SPFx 构建系统一无所知,不知道这是否可行;如果您尝试并遇到特定问题,我可能会提供帮助。

另一个想法是使用与您的 TypeScript 版本兼容的旧版本 @types 包,尽管它们可能缺少您需要的功能。例如,对于 TypeScript 2.4.2,您可以通过运行 npm install @types/prop- 安装 @types/prop-typests2.4 标签types@ts2.4(或 npm install -D @types/prop-types@ts2.4;有关差异的详细信息,请参阅 here)。

关于node.js - SPFx Webpart - node_modules/@types/[prop types] 和 [react] index.d.ts : loads of "error TS1005" on gulp build,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52925657/

相关文章:

node.js - 如何在 mongoose 中设置 objectId 属性?

javascript - mapStateToProps 应该异步更新 props 吗?

typescript - 如何从 typescript 中的实例方法访问静态成员?

javascript - 根据 Angular2 中的点击更改 View

javascript - 抽象类应该直接实现接口(interface)吗?有什么优点和缺点

javascript - 要上传文件,在 post body 与 multipart/form-data 中发送 base64 的优缺点是什么

node.js - Passport.js 本地策略身份验证配置

node.js - Nodejs View 猜测多个扩展名

reactjs - .NET Core 5 WebApi 如何包含 React 应用程序

javascript - React.useCallback() 用于链式匿名函数