Reactjs React-Typescript:第0行:分析错误:无法读取属性';名称';未定义的
今天,我突然开始在一个用Typescript构建的项目上出现构建错误。在一个(或它引用的任何东西)几个星期没有更改的文件中,我开始得到:Reactjs React-Typescript:第0行:分析错误:无法读取属性';名称';未定义的,reactjs,typescript,create-react-app,react-scripts,react-typescript,Reactjs,Typescript,Create React App,React Scripts,React Typescript,今天,我突然开始在一个用Typescript构建的项目上出现构建错误。在一个(或它引用的任何东西)几个星期没有更改的文件中,我开始得到: ./path/to/my/file.ts Line 0: Parsing error: Cannot read property 'name' of undefined 这个错误最初出现在我们的CI上,可以通过在服务器上手动构建来复制,在更新所有包之后,我最终可以在自己的计算机上复制(运行得非常好)。现在,即使我撤销了我的项目的旧(构建)承诺,我也无法
./path/to/my/file.ts
Line 0: Parsing error: Cannot read property 'name' of undefined
这个错误最初出现在我们的CI上,可以通过在服务器上手动构建来复制,在更新所有包之后,我最终可以在自己的计算机上复制(运行得非常好)。现在,即使我撤销了我的项目的旧(构建)承诺,我也无法构建它。我已将warn.lock
提交到我的回购协议中,但即使使用旧的package.json
和warn.lock
(我删除node\u模块并执行warn
),我也无法构建
这个错误是从今天开始的
原因可能是什么
我的(可能相关)版本:
yarn 1.22.4,
node v13.11.0,
typescript 3.7.5
react 16.12
react-scripts 3.4.0
macOS 10.15 Catalina
只需将typescript版本更新到3.8.x:问题显然是由依赖项的某些(对等?)依赖项的错误配置引起的,react scripts
使用typescript模板。它消失了。请确保更新您的依赖项,清除节点\ u模块
,甚至清除包锁.json
或纱线锁
,然后现在再次尝试新版本。I
npx创建反应应用程序我的应用程序--模板类型脚本
更准确地说,create react-app@3.4.1
通过运行以下命令解决了此问题:
rm纱线锁和&rm-rf节点模块和npm i
之后,您可以运行:
无论是纱线开始
还是npm开始
在我的例子中,我只需要在ts文件的末尾添加一个额外的换行符
export * from './result';
export * from './request';
//new line here
在我的案例中,罪魁祸首是不存在文件的资产导入,例如:
从“../assets/img/some icon.svg”导入{ReactComponent as SomeIcon};
上面的答案帮助我找到了罪犯我运行了rm-rf节点_模块package-lock.json&&npm I&&npm start
,,这导致显示了真正的错误(而不是毫无帮助的晦涩的“第0行:解析错误:无法读取未定义的属性“名称”)
添加丢失的文件后,错误就消失了。发生此错误的原因是您的typescript与typescript eslint插件不兼容
您可以通过将这两个依赖项升级到最新版本来修复它
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^4.6.0",
"@typescript-eslint/parser": "^4.6.0",
}
在我的例子中,这是因为我在\src
下有TS代码,它在\tools
下引用TS代码,但我在include
中只有src
在我的tsconfig.json
中,添加了tools
修复了更新react脚本对我有效的问题react scripts 3.4.0
可能不支持typescript 3.7.5
我也有同样的问题,你找到错误的原因了吗?@Kenjoe问题现在自行解决了。可能是对依赖的对等依赖的一些错误配置。不,没有解决我的问题。每晚更新到3.9,但仍然是一样的。在4.0上,仍然遇到同样的问题。奇怪的是,升级到3.8.X
没有用,清除的node\u模块再次安装,很好地将TS升级到3.8.X修复了我的eslint问题,但我一直失败,直到清除了node\u模块和我的*-lock.json文件。我还关闭并重新打开了我的IDE,现在一切正常。在2020年8月,我通过将Correlot自动升级到^4.0.2
后将Typescript回滚到^3.9.5
解决了这个问题。YMMV如果您在升级到TS 4.0后遇到此问题,那是因为create react app尚不支持TS 4.0(或者更准确地说,它的依赖项不支持)。您可以通过降级TS,使用CRA 4.0的预发布版本,或根据调用cretae react app
强制固定您的TS eslint和解析器依赖项来修复。这解决了我的问题。尽管如此,在尝试了几次删除纱线后,我还是设法让应用程序使用纱线编译。锁定并运行纱线
为我做到了!只需删除节点\u模块
,然后删除纱线
,就这样。