Reactjs TypeError:无法读取属性';附上';未定义makeStyles.js的

Reactjs TypeError:无法读取属性';附上';未定义makeStyles.js的,reactjs,typescript,heroku,material-ui,mern,Reactjs,Typescript,Heroku,Material Ui,Mern,当尝试在生产版本上访问my MERN应用程序的登录组件时,我遇到以下一系列类型错误,如图所示: 我的应用程序()在本地运行得非常好,今天早些时候在Heroku上运行得非常好 我尝试回滚我今天在代码中所做的所有更改,但没有结果。类似地,我检查了package.json(and.lock)以查看是否更改了material UI依赖项,但这是相同的。我似乎不明白为什么它在托管版本上突然停止工作 错误行的代码如下所示。但是,我没有写,因为它是MaterialUI的一部分 if (sheetManage

当尝试在生产版本上访问my MERN应用程序的登录组件时,我遇到以下一系列类型错误,如图所示:

我的应用程序()在本地运行得非常好,今天早些时候在Heroku上运行得非常好

我尝试回滚我今天在代码中所做的所有更改,但没有结果。类似地,我检查了package.json(and.lock)以查看是否更改了material UI依赖项,但这是相同的。我似乎不明白为什么它在托管版本上突然停止工作

错误行的代码如下所示。但是,我没有写,因为它是MaterialUI的一部分

if (sheetManager.dynamicStyles) {
    var dynamicSheet = stylesOptions.jss.createStyleSheet(sheetManager.dynamicStyles, _extends({
        link: true
    }, options));
    dynamicSheet.update(props).attach();
    state.dynamicSheet = dynamicSheet;
    state.classes = mergeClasses({
        baseClasses: sheetManager.staticSheet.classes,
        newClasses: dynamicSheet.classes
    });

    if (sheetsRegistry) {
        sheetsRegistry.add(dynamicSheet);
    }
} else {
    state.classes = sheetManager.staticSheet.classes;
}

sheetManager.refs += 1;
这是我第一个部署的应用程序,尽管我尽了最大的努力,但我不知道所有的东西是如何从工作状态变为不工作状态的

编辑。我应该提到,我在Firefox和Chrome中测试过错误日志

编辑#2。经过大量调试后,我发现如果我通过Heroku回滚到提交fccc55a5,错误就消失了。但是,如果我使用该提交创建一个新分支并尝试部署该分支,它将不起作用

请看这里


当我恢复到Heroku中的最后一个构建时,它会起作用。但是,如果我将以前的提交合并到一个新分支中并尝试部署它,它将不会。发生这种情况是因为我将@material ui/core^4.4.0更新为@material ui/core^4.8.1。新版本中可能会出现突破性的更改或错误。最新版本在四天前发布,因此可能还没有解决方案。但对于您的问题,请尝试降级到@material ui/core^4.4.0或您使用的material ui的早期版本,它应该可以工作。不需要回滚到以前的提交。

也面临同样的问题。我当时在@material ui/core^4.7.1上,我只是去试验并删除了锁文件和节点单元模块。然后我面对了这个问题。 问题似乎出在@material ui/styles最新版本上


通过将@material ui/core更新为4.6.1,删除锁文件和节点模块,再次安装软件包,解决了问题。

在我的例子中,通过删除Box组件解决了问题。

我认为问题在于jss和
@material ui/core

在修复之前,我已经安装了
样式化组件
,并重写了Box组件:

import {
  borders,
  BordersProps,
  display,
  DisplayProps,
  flexbox,
  FlexboxProps,
  palette,
  PaletteProps,
  positions,
  PositionsProps,
  shadows,
  ShadowsProps,
  sizing,
  SizingProps,
  spacing,
  SpacingProps,
  typography,
  TypographyProps,
} from '@material-ui/system';
import styled from 'styled-components';

/*
 * Box with styled-components
 */
export const Box = styled.div<
  BordersProps & DisplayProps & FlexboxProps & PaletteProps & PositionsProps & ShadowsProps & SizingProps & SpacingProps & TypographyProps
>`${borders}${display}${flexbox}${palette}${positions}${shadows}${sizing}${spacing}${typography}`;

导入{
边界,
边界计划,
展示,,
展示道具,
flexbox,
FlexboxProps,
调色板,
帕勒特道具,
位置,
职位招聘,
阴影,
暗影喷射,
尺寸,
大小道具,
间距,
SpacingProps,
排版,
印刷字体,
}来自“@物料界面/系统”;
从“样式化组件”导入样式化;
/*
*带有样式化组件的框
*/
导出常量框=styled.div<
边框投影和显示投影和FlexboxProps&PaletteProps&PositionsProps&ShadowsProps&SizingProps&SpacingProps&打字投影
>`${borders}${display}${flexbox}${palette}${positions}${shadows}${Size}${spacing}${排版}`;

尝试将
材质ui
升级到
4.8.1
。如果不起作用,请将
“jss”:“10.0.0”
添加到
包.json中作为临时修复

来源:

添加 “jss”:“10.0.0” 到 “依赖项”:{} 为我解决了这个问题

——19年12月30日更新--

“jss”现在可以删除

错误已在以下位置修复:

"@material-ui/core": "4.8.2",

快速解决方法:从dynamicSheet.update(props)中删除属性“.attach()”。
但是,这对于生产环境并不可取,对于任何本地开发环境来说都是一个快速解决方案

如果你像我一样使用
纱线
,那么你可以通过在
包中添加
分辨率
字段来解决这个问题

package.json
应该如下所示:

{

  "dependencies": {
    "@material-ui/core": "^4.8.1",

  },
  "resolutions": {
    "jss": "10.0.0"
  }
}
我也在Github上分享了我的解决方案(似乎对其他人也有用):

如果答案对你也有效,请接受它!:)

使用npm:
1-删除节点模块文件夹和package-lock.json文件
2-打开package.json文件
3-在依赖项下更改或添加此项:“@material ui/core”:“^4.6.1”,
4-npm i

解决了我的问题。

在更新材料ui后,npm将更新其所有依赖项,因此简单的降级将不起作用。更好的解决方案是删除整个“nodemodules”文件夹,并将package.json和package-lock.json替换为以前提交(更新前提交)中的相同文件。然后进行npm安装,我做了这个,一切正常。这个问题解决了吗?你可以用我的回答暂时解决它:你怎么知道这是问题?@MikeK,因为
jss
10.0.1
版本发布了破坏材料UI单元测试的破坏性更改。更多信息请访问:这对我很有用,谢谢。如果您遇到此问题,请检查您安装的material ui core的版本,升级它(或者如果您使用的是“^4.X.X”),只需删除节点_模块,以及package.lock.json或warn.lock.json,然后执行新的npm安装