Подтвердить что ты не робот

Как получить доступ к глобальному объекту (окну) с помощью 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.

4b9b3361

Ответ 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.