我在这里安装了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