简单的反应错误:不能在 Next.js 中使用 @material-ui/picker 库

Posted

技术标签:

【中文标题】简单的反应错误:不能在 Next.js 中使用 @material-ui/picker 库【英文标题】:Simple React Error: Can't use @material-ui/picker library in Next.js 【发布时间】:2020-11-28 17:46:36 【问题描述】:

我正在尝试在 Next.js 应用程序中使用 @material-ui/pickers 库。

我在/pages 中添加了_app.js 文件作为indicated in the Next.js docs 作为放置Picker 提供程序的地方:

import React from "react";
import PropTypes from "prop-types";
import  ThemeProvider  from "@material-ui/core/styles";
import  MuiPickersUtilsProvider  from "@material-ui/pickers";
import DateFnsUtils from "@date-io/date-fns"; // using version 1.x as described in the docs
import CssBaseline from "@material-ui/core/CssBaseline";
import theme from "../src/theme";

export default function MyApp(props) 
  const  Component, pageProps  = props;

  React.useEffect(() => 
    // Remove the server-side injected CSS.
    const jssStyles = document.querySelector("#jss-server-side");
    if (jssStyles) 
      jssStyles.parentElement.removeChild(jssStyles);
    
  , []);

  return (
    <React.Fragment>
      <ThemeProvider theme=theme>
        <CssBaseline />
        <MuiPickersUtilsProvider utils=DateFnsUtils>
          <div>Hello</div>
          <Component ...pageProps />
        </MuiPickersUtilsProvider>
      </ThemeProvider>
    </React.Fragment>
  );

代码沙盒示例:https://codesandbox.io/s/crimson-rgb-cqg5p?file=/pages/_app.js

由于某种原因,服务器无法使用此设置启动。在做一个 SPA 反应应用程序(没有 Next.js)时,它工作正常。添加 Next.js 虽然会导致问题。任何帮助表示赞赏。

【问题讨论】:

我的看法,那个库,我的意思是@material-ui/pickers,使用一些浏览器主机api。 【参考方案1】:

您缺少对等依赖项。 @material-ui/pickers 文档可能会更好,但您需要 @date-io/date-fns@1.xdate-fns@2.x 依赖项(至少如果您要使用 date-fns

尝试运行以下命令并重新启动您的开发服务器:

npm install date-fns@2.x

【讨论】:

以上是关于简单的反应错误:不能在 Next.js 中使用 @material-ui/picker 库的主要内容,如果未能解决你的问题,请参考以下文章

使用 Next.js 后端反应本机

使用带有 next.js 的反应路由器

Next.js 服务器端 api 调用返回 500 内部服务器错误

在 next.js 中将反应导入页面

尝试将 FontAwesome 放入正文时出现 Next.js 链接错误

我正在尝试使用 next.js 转换我现有的反应应用程序。这是正确的做法吗?