javascript Next.js无法识别'@types/react'

olhwl3o2  于 2023-04-19  发布在  Java
关注(0)|答案(5)|浏览(134)

当我尝试使用npm run dev运行我的Next.js应用程序时,我收到一条错误消息,说我没有使用Typescript运行Next所需的包:

Please install @types/react by running:

        npm install --save-dev @types/react

If you are not trying to use TypeScript, please remove the tsconfig.json file from your package root (and any TypeScript files in your pages directory).

然而,安装了模块'@types/react'。我尝试运行npm install --save-dev @types/react,没有得到任何错误消息(只有一堆警告,但我不认为它们是问题所在)。
我如何解决这个问题并运行该项目?

tv6aics1

tv6aics11#

似乎在当前的@types/react版本(特别是v18.0.2)中有一个bug,您可以使用npm install --save-dev @types/react@18.0.1降级到18.0.1
来源:https://github.com/vercel/next.js/issues/36085

xqk2d5yq

xqk2d5yq2#

我使用了yarn add -D @types/react@18.0.1,它工作得很好!Netsu是对的,似乎在当前的@types/react版本中有一个bug(特别是v18.0.2)。

3lxsmp7m

3lxsmp7m3#

我的解决方案是添加--only到生产环境中:
运行Yarn安装--仅=生产

k7fdbhmy

k7fdbhmy4#

我在这里采用的另一种方法是使用npx create-next-app创建一个新的nextjs项目。然后复制所有依赖项和devDependencies的版本。
这是一个示例package.json。我在创建新的nextjs项目后得到的。

{
  "name": "my-app",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "next": "12.2.4",
    "react": "18.2.0",
    "react-dom": "18.2.0"
  },
  "devDependencies": {
    "@types/node": "18.7.1",
    "@types/react": "18.0.17",
    "@types/react-dom": "18.0.6",
    "eslint": "8.21.0",
    "eslint-config-next": "12.2.4",
    "typescript": "4.7.4"
  }
}

创建新的nextjs项目后,复制所有package.json中列出的版本。这将确保您的核心依赖项彼此兼容。

vc6uscn9

vc6uscn95#

您需要确保@types/react、react和react-dom的版本在package.json中锁定并对齐

diff --git a/package.json b/package.json
index 3508c106..cbc412d0 100644
--- a/package.json
+++ b/package.json
@@ -47,9 +47,9 @@

-    "react": "^17.0.2",
+    "react": "17.0.2",
-    "react-dom": "^17.0.2",
+    "react-dom": "17.0.2",
-    "@types/react": "^17.0.0",
+    "@types/react": "17.0.2",

考虑禁用乐观更新以确保构建稳定性。

npm install --save-exact 'react@17.0.2' // etc

相关问题