Как получить доступ к глобальному объекту (окну) с помощью webpack?
Я пытаюсь связать ActionScript с JavaScript с помощью ExternalInterface
и webpack.
ExternalInterface
может только спровоцировать (call
) функции, найденные на глобальном объекте (window
). Как я могу получить ссылку модуля webpack на window
(глобальный объект)?
Позвольте мне уточнить некоторые, я хочу иметь пространство имен для компании (window.companyName
) с интерфейсом для ExternalInterface
:
window.companyName = { isReady: function() { ... },
driver1: function() { ... },
driver2: function() { ... } }
ActionScript будет управлять моим JavaScript. Более фундаментальный вопрос: как установить глобальные переменные с помощью webpack, чтобы ExternalInterface
мог их видеть (желательно как экспорт модуля)?
Я пробовал использовать expose-loader
, exports-loader
imports-loader
без везения. expose-loader
идеально, что мне нужно, но, похоже, не работает. Когда я устанавливаю window.companyName в своих модулях и пытаюсь проверить его в моей хром-консоли, это приводит к undefined
.
Ответы
Ответ 1
Разве вы не используете webpack-dev-server
?
Потому что, когда я пытаюсь выполнить команду webpack
, все работает нормально. Я тестирую его, набрав window.mySampleGlobalVariable
в инструментах разработчика Chrome.
НО, когда я запускаю команду webpack-dev-server
, тогда моя переменная окна undefined.
У меня есть пример приложения:
app.js
window.mySampleGlobalVariable = 'TEST';
console.log('App is ready');
index.html
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Webpack test</title>
</head>
<body>
Webpack test
<script src="bundle.js"></script>
</body>
</html>
webpack.config.js
var path = require('path');
module.exports = {
entry: './app.js',
output: {
filename: './bundle.js'
},
resolve: {
extensions: ['', '.js']
}
};
Ответ 2
У вас do есть доступ к объекту окна из вашего веб-пакета script. Webpack не мешает ему, так как функция-оболочка вводит только аргументы module
, exports
и __webpack_require__
.
Попробуйте написать script с одной строкой, которая будет обращаться к объекту окна, а затем проверить вывод script.
Ваше задание должно работать, если выполнение не достигает его, или какой-то загрузчик меняет соответствующий код.
Ответ 3
Если вы используете webpack-dev-server
с iframe, вы не можете получить доступ к переменной через консоль Chrome.