使用钩子会破坏盖茨比/反应入门应用程序



我在这里安装了Gatsby入门应用程序。在我添加一个钩子(即用下面的代码替换索引.js之前,它工作正常:

import React, { useState } from 'react';
export default () => {
const [greeting, setGreeting] = useState('hi'); // Adding this line breaks it - this is the only change I make
return (
<div>Whatever</div>
);
}

错误是:

错误:挂钩调用无效。钩子只能在函数组件的主体内部调用。这可能是由于以下原因之一而发生的: 1. 你可能有不匹配的 React 和渲染器版本(比如 React DOM( 2.你可能违反了钩子的规则 3. 您可能在同一应用程序中有多个 React 副本

我确认没有一个常见的解决方案适用。

关于我的系统的一些信息:

node -v // v12.14.1
npm -v // 6.13.4
npm list -g --depth=0                                                               
`-- gatsby-cli@2.8.23
npm list react
+-- gatsby@2.18.12
| `-- gatsby-cli@2.8.19
|   `-- react@16.12.0  deduped
`-- react@16.12.0
npm list --depth=0                                                                  gatsby-starter-hello-world@0.1.0 C:codemy-hello-world-starter
+-- gatsby@2.18.12
+-- prettier@1.19.1
+-- react@16.12.0
`-- react-dom@16.12.0
npm ERR! peer dep missing: typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta, required by tsutils@3.17.1
npm ERR! peer dep missing: typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta, required by tsutils@3.17.1

请帮忙 - 我不知所措。我看到了另一篇关于Windows路径区分大小写的文章,但它似乎不适用于Powershell,应该在这些版本中修复。

我试过:

rm -r node_modules
rm package-lock.json
npm cache clean -f
npm i

我还删除了除盖茨比以外的所有全局 npm 包。

这是一条红鲱鱼。真正破坏应用程序的是从以下gatsby develop运行的:

c/code/myapp而不是c:/Code/myapp.请注意,Code在"正确"示例中大写。Github问题说这在几个版本前就已经修复了,但事实并非如此。希望这对其他人有所帮助。

https://github.com/facebook/create-react-app/issues/3609

相关内容

  • 没有找到相关文章

最新更新