Tôi đang cố gắng tải angular-ui-router trong Webpack dưới dạng phụ thuộc bên ngoài. Tên mô-đun là "angular-ui-router". Dưới đây là một ví dụ:Tên gói web bên ngoài tên gói có dấu gạch ngang
module.exports = webpackMerge(commonConfig, {
...
externals: {
'angular': true,
'angular-ui-router': true
},
...
});
Vấn đề với điều này là Webpack tạo ra một mô-đun trong app.bundle.js của tôi trông giống như sau:
/***/ },
/* 1 */
/***/ function(module, exports) {
module.exports = angular;
/***/ },
/* 2 */
/***/ function(module, exports) {
module.exports = angular-ui-router;
/***/ }
/******/ ]);
Khi trình duyệt cố gắng nạp module, nó đánh giá module.exports = angular-ui-router
như là một biểu, ném các lỗi sau:
Uncaught ReferenceError: ui is not defined
việc sửa chữa duy nhất tôi đã tìm thấy cho vấn đề này là:
module.exports = webpackMerge(commonConfig, {
...
externals: {
'angular': true,
'angular-ui-router': 'window["angular-ui-router"]'
},
...
});
Điều này mang lại kết quả chính xác.
Có cách nào tốt hơn không?
Không có cách nào tốt hơn, thực sự. Thật khó chịu khi 'cửa sổ' không được ngụ ý cho tùy chọn boolean bên ngoài đơn giản, nhưng điều đó làm cho nó hữu ích khi nhắm mục tiêu những thứ khác ngoài tập lệnh trình duyệt (ví dụ như tập lệnh web worker chẳng có' cửa sổ'). – Jacob