TypeError:无法读取未定义的makeStyles.js的属性“ attach”


15

当尝试在生产版本上访问我的MERN应用程序的Login组件时,此图像中显示了一系列以下类型错误:

在此处输入图片说明

我的应用程序(https://github.com/ahaq0/kumon_schedule)在本地运行良好,并且在今天早些时候在Heroku上托管的运行良好。

我尝试回滚我今天所做的代码中的所有更改,但均无济于事。同样,我检查了package.json(和.lock)以查看是否更改了材料UI依赖关系,但这是相同的。我似乎无法弄清楚为什么它突然在这里的托管版本上停止工作。

错误行的代码如下。但是,我没有编写内容,因为它是用户界面的一部分。

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,则错误消失了。但是,如果我使用该提交创建了一个新分支并尝试部署该分支,它将无法正常工作。

请在这里查看 https://github.com/ahaq0/kumon_schedule/compare/fccc55a5...fccc55a5

当我恢复到Heroku中的最后一个版本时,它将起作用。但是,如果我将先前的提交合并到新分支中并尝试部署它,则不会。


这是固定的吗?
Mike K

您可以使用我的答案临时解决此问题:stackoverflow.com/a/59514748/3971297
Alfonso

Answers:


10

将“ jss”:“ 10.0.0”添加到“ dependencies”:{}为我解决了此问题

---更新30.12.19-

现在可以删除“ jss”,

错误已修复:

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

1
这对我有用,谢谢,如果您遇到此问题,请检查已安装的material-ui内核的版本,对其进行升级(或者如果您使用的是“ ^ 4.XX”),只需删除node_modules和package.lock。 json或yarn.lock.json并执行全新的npm安装
Braulio

6

如果您yarn像我一样使用,则可以通过resolutionspackage.json目标jss 10.0.0版本中添加一个字段来解决此问题。

package.json 应该看起来像这样:

{

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

  },
  "resolutions": {
    "jss": "10.0.0"
  }
}

我也在Github上分享了我的解决方案(似乎对其他人也有用):https : //github.com/mui-org/material-ui/issues/19005#issuecomment-569447204

如果它也对您有用,请接受答案!:)


您怎么知道这是问题所在?
迈克·K

2
@MikeK,因为jss 10.0.1版本发布了重大更改,这些更改破坏了材料UI单元测试。更多信息,请访问:github.com/cssinjs/jss/issues/1249
Alfonso

3

就我而言,它是通过删除Box组件解决的。


1

我正面临着同样的问题。发生是因为我将@ material-ui / core ^ 4.4.0更新为@ material-ui / core ^ 4.8.1。在新版本中可能会有重大更改或错误。最新版本仅在四天前发布,因此可能还没有解决方案。但是对于您的问题,请尝试降级为@ material-ui / core ^ 4.4.0或您使用的旧版Material-ui,它应该可以工作。无需回滚到以前的提交。


更新material-ui npm后,它将更新所有依赖关系,因此简单地降级将不起作用。更好的解决方案是删除整个“ nodemodules”文件夹,并使用与先前提交(在更新之前提交)相同的文件替换package.jsonpackage-lock.json。然后执行npm install,我做到了,一切工作正常。
拉利特·贾巴德

1

我认为问题出在jss和Box组件中 @material-ui/core

在修复之前,我已经安装styled-components并重写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}`;


-1

也面临同样的问题。我在@ material-ui / core ^ 4.7.1上,我只是去实验并删除了锁定文件和node_modules。然后我遇到了问题。似乎问题出在@ material-ui / styles最新版本上。

通过将更新@ material-ui / core还原为4.6.1来解决该问题,删除了锁定文件和node_modules,再次安装了软件包。


-1

快速解决方法:从dynamicSheet.update(props)删除属性“ .attach()”。不建议将其用于生产环境,但是它是任何本地开发环境的快速修复。


-1

使用npm:
1-删除node_modules文件夹和package-lock.json文件
2-打开package.json文件
3-在依赖项下更改或添加:“ @ material-ui / core”:“ ^ 4.6.1”,
4- npm我
解决了我的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.