问题:
我正在尝试使用React和Material UI创建一个网站(网络应用程序),它使用 npm 工作得很好。但是,当我尝试将它们制作为externals
并通过 CDN 导入它们时,出现 Material UI 错误(React 工作正常)。
我的代码:
我在index.html 中链接 CDN,如下所示:
<script src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/@material-ui/core/umd/material-ui.production.min.js"></script>
<script src="app.min.js"></script>
在app.min.js 中,我像这样导入它们:
import { Component } from 'react';
import ReactDOM from 'react-dom';
import { Button } from '@material-ui/core';
我的尝试:
在webpack.config.js 中,我尝试了以下操作(同样,只有 Material UI 会导致错误):
使用字符串:
externals: { 'react': 'React', 'react-dom': 'ReactDOM', '@material-ui/core': 'Button' }
给出:
未捕获的 ReferenceError:按钮未定义
使用对象:
externals: { 'react': 'React', 'react-dom': 'ReactDOM', '@material-ui/core': { Button: '@material-ui/core' } }
给出:
类型错误:无法读取未定义的属性“按钮”
手动执行,因此 Material UI 不在外部:
externals: { 'react': 'React', 'react-dom': 'ReactDOM' }
然后从app.min.js 中删除缩小的 Material UI 代码,这会使代码不完整并且无法运行。
在没有任何运气的情况下搜索了 GitHub 问题和 SO 问题,一些链接:
知道我该如何解决这个问题吗?