2

我创建了许多 React 组件,它们包装了 Material-UI 组件并打包为 NPM 模块。

该模块在通过远程包安装时可以正常工作:npm install *name-of-package*,或通过本地安装:npm install ../*name-of-package*

但是,对于模块开发,我想使用/ etcnpm link以便可以在模块和站点目录中使用 /etc。webpack --watchwebpack-dev-server

为此,我正在运行npm link在模块目录中创建符号链接,然后npm link *name-of-package*在站点目录中。Webpack 按预期启动,但是我在浏览器中不断遇到与 MUIwithStyles功能相关的错误:

Uncaught TypeError: Cannot read property '@global' of undefined指的是var rules = style[propKey];线function handleNestedGlobalContainerRule(rule)

以及其他如:The above error occurred in the <WithStyles(Typography)> component

从我从类似的帖子中可以看出,这是在抱怨缺少theme对象(该站点MuiThemeProvider声明了一个主题对象)。

谁能建议为什么这可能npm install适用而不适用npm link?我似乎无法弄清楚这一点。

4

1 回答 1

0

在检查了各种提交并阅读了@AstenMies 的参考资料后,我似乎已经解决了这个问题。或者至少我不再能够复制这个问题。

我不完全确定哪个确切的更改解决了这个问题,但我会列出我做了什么,以防其他人发现自己处于这种情况:

  • 正如@AstenMies 的链接所指向的那样,我的theme对象中的属性是未定义的(尽管这本身并不能解决我的问题)
  • 确保你的模块和站点的 React 和 React-DOM 版本是相同的
  • 不要混合你的命令yarn addnpm install命令——混合包管理器会导致不一致
  • 如有疑问,请删除您的node_modules文件夹并重新安装。您也可以npm cache clean在这里避免任何缓存的脏东西
于 2018-10-17T02:32:35.033 回答