Я использую WebPack 4 для создания моих TypeScript приложений.
Один из моих модулей использует библиотеку moment-timezone, например ...
moment-timezone
import * as moment from 'moment-timezone'; $('#label-locale').text(moment.locale());
и это работает, как и ожидалось.
Чтобы лучше использовать кэширование, я хотел бы сослаться на moment и moment-timezone из Сети доставки контента (CDN) и добавил следующее на мою HTML страницу:
moment
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 следующим образом:
webpack.config.js
module.exports = { externals: { 'jquery': 'jQuery', 'moment': 'moment-timezone' } };
Теперь, когда я запускаю свой код,Я получаю следующую ошибку:
ReferenceError: timezone is not defined
Я новичок в WebPack и пробовал такие вещи, как добавление 'timezone': 'moment-timezone' к externals без успеха.
'timezone': 'moment-timezone'
externals
Любойпомощь / направление будет очень цениться.
Я обдумывал это.moment-timezone на самом деле «просто» расширяет объект moment для включения moment.tz, поэтому все, что мне нужно было сделать, это изменить webpack.config.js следующим образом:
moment.tz
module.exports = { externals: { 'jquery': 'jQuery', 'moment-timezone': 'moment' } };
Таким образом, вместо WebPack эффективно сборка всего дерева определений из node_modules/moment-timezone объекта moment уже была обновлена ссылкой CDN.По крайней мере, я так думаю.
WebPack
node_modules/moment-timezone