我正在使用WebPack 4来构建我的TypeScript应用程序。
我的一个模块使用moment-timezone
库,例如......
import * as moment from 'moment-timezone';
$('#label-locale').text(moment.locale());
这按预期工作。
为了更好地利用缓存,我想从内容交付网络(CDN)中引用moment
和moment-timezone
,并将以下内容添加到我的HTML
页面:
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment-with-locales.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.min.js"></script>
我还修改了webpack.config.js
如下:
module.exports = {
externals: {
'jquery': 'jQuery',
'moment': 'moment-timezone'
}
};
现在,当我运行我的代码时,我收到以下错误:
ReferenceError: timezone is not defined
我是WebPack的新手,并尝试过将'timezone': 'moment-timezone'
添加到externals
而没有成功。
任何帮助/方向将非常感谢。
我过度思考了这一点。 moment-timezone
实际上'只是'扩展moment
对象以包括moment.tz
,所以我所要做的就是修改webpack.config.js
如下:
module.exports = {
externals: {
'jquery': 'jQuery',
'moment-timezone': 'moment'
}
};
因此,不是WebPack
从node_modules/moment-timezone
有效地构建整个定义树,而moment
对象已经由CDN参考更新。至少,我认为这就是正在发生的事情。