typescript 错误:mobx-react-lite需要React with Hooks支持

2vuwiymt  于 2023-06-07  发布在  TypeScript
关注(0)|答案(3)|浏览(218)

我无法启动应用程序。我不知道我在寻找什么。一切都很好。
在一开始,我试图改变我的商店从redux到mobx。我所做的一切主要是关于打字,巴别塔转换等。最后,我的项目成功了。但是,typescript build不足以启动我的项目。此时此刻我很困惑。有什么建议吗?解决方案会更好:))
这是我的package.json

{
  "name": "client",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@babel/core": "^7.11.0",
    "@babel/plugin-proposal-class-properties": "^7.10.4",
    "@babel/plugin-proposal-decorators": "^7.10.5",
    "@babel/plugin-proposal-object-rest-spread": "^7.11.0",
    "@babel/preset-env": "^7.11.0",
    "@babel/preset-react": "^7.10.4",
    "@babel/preset-typescript": "^7.10.4",
    "@types/jest": "^26.0.7",
    "@types/node": "^14.0.26",
    "@types/react": "^16.9.43",
    "@types/react-dom": "^16.9.8",
    "@types/react-redux": "^7.1.9",
    "@types/react-router-dom": "^5.1.5",
    "@types/react-select": "^3.0.14",
    "axios": "^0.18.0",
    "babel-plugin-transform-decorators-legacy": "^1.3.5",
    "create-react-hook": "^3.0.2",
    "date-fns": "^2.0.0-alpha.27",
    "mobx": "^5.15.4",
    "mobx-react": "^6.2.5",
    "mobx-react-lite": "^2.0.7",
    "moment": "^2.24.0",
    "node-sass": "^4.14.1",
    "prop-types": "^15.7.2",
    "react": "^16.6.3",
    "react-alert": "^5.5.0",
    "react-alert-template-basic": "^1.0.0",
    "react-confirm-alert": "^2.0.7",
    "react-datepicker": "^2.5.0",
    "react-dom": "^16.6.3",
    "react-dropdown": "^1.6.4",
    "react-fileupload-progress": "^0.4.2",
    "react-redux": "^6.0.0",
    "react-router": "^4.3.1",
    "react-router-dom": "^4.3.1",
    "react-scripts": "2.1.1",
    "react-select": "^2.4.3",
    "react-table": "^6.8.6",
    "react-transition-group": "^4.0.1",
    "redux": "^4.0.1",
    "typescript": "^3.9.7"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all",
    "not dead",
    "not ie <= 11",
    "not op_mini all",
    "not ie <= 11",
    "not op_mini all"
  ]
}

此外,错误如下所示

Error: mobx-react-lite requires React with Hooks support
▼ 2 stack frames were expanded.
Module.<anonymous>
C:/Users/User/Source/repos/sasd/node_modules/mobx-react-lite/dist/mobxreactlite.esm.js:5
Module../node_modules/mobx-react-lite/dist/mobxreactlite.esm.js
http://localhost:3000/static/js/0.chunk.js:7192:30
▲ 2 stack frames were expanded.
__webpack_require__
C:/Users/User/Source/repos/obilet/webpack/bootstrap:782
  779 | };
  780 | 
  781 | // Execute the module function
> 782 | modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));
      | ^  783 | 
  784 | // Flag the module as loaded
  785 | module.l = true;`
4ioopgfo

4ioopgfo1#

第一个支持钩子的react版本是16.8.0
不确定您安装的库版本与这些恼人的^
尝试npm update reactyarn upgrade react

von4xj4u

von4xj4u2#

在使用mobx的地方添加“使用客户端”

dfddblmv

dfddblmv3#

这将是一个迟来的答案,并没有真正解决操作问题,因为他们使用的是旧版本的react,但如果你遇到这个问题使用现代的react和Next.js(>= 13.x),它是作为上述评论者的状态。你需要在任何脚本的顶部添加“使用客户端”,你计划在使用钩子的时候制作前端。Next.js将把任何其他脚本视为服务器组件禁用钩子。

"use client";

import { useState } from "react";
import { observer } from "mobx-react-lite";

function Navbar() { ... }

相关问题