我创建了许多 React 组件,它们包装了 Material-UI 组件并打包为 NPM 模块。
通过远程软件包:npm install *name-of-package*
或通过本地安装:npm install ../*name-of-package*
安装时,该模块工作正常。
但是,对于模块开发,我想使用npm link
以便我可以在模块和站点目录中使用webpack --watch
/webpack-dev-server
等。
为此,我正在运行npm link
以在模块目录中创建一个符号链接,然后在站点目录中npm link *name-of-package*
。Webpack 按预期启动,但是我在浏览器中不断遇到与 MUI 的withStyles
功能相关的错误:
Uncaught TypeError: Cannot read property '@global' of undefined
指的是function handleNestedGlobalContainerRule(rule)
的var rules = style[propKey];
线。
其他如:The above error occurred in the <WithStyles(Typography)> component
从我从类似的帖子中可以看出,这是在抱怨缺少theme
对象(该网站有一个声明了主题对象的MuiThemeProvider
(。
谁能建议为什么这可能适用于npm install
而不是npm link
?我似乎无法弄清楚这一点。
在检查了各种提交并阅读了@AstenMies的参考资料后,我似乎已经解决了这个问题。或者至少我不再能够复制这个问题。
我不完全确定哪个确切的更改解决了这个问题,但我会列出我所做的,以防其他人发现自己处于这种情况:
- 正如@AstenMies的链接所指向的那样,我的
theme
对象中的属性是未定义的(尽管这本身并没有解决我的问题( - 确保你的模块和站点的 React 和 React-DOM 版本相同
- 不要混合使用
yarn add
和npm install
- 混合包管理器可能会导致不一致 - 如有疑问,请删除
node_modules
文件夹,然后重新安装。您也可以在此处npm cache clean
以避免任何缓存的讨厌