如何使用webpack访问全局对象(窗口)?

use*_*912 18 javascript global-variables actionscript-3 externalinterface webpack

我正在尝试使用JavaScript ExternalInterface和webpack 将ActionScript与JavaScript连接起来.

ExternalInterface只能call在全局对象(window)上找到provoked()函数.如何在window(全局对象)上获取webpack模块参考?

请允许我详细说明一下,我想为company(window.companyName)创建一个名称空间,其接口为ExternalInterface:

window.companyName = { isReady: function() { ... },
                       driver1: function() { ... }, 
                       driver2: function() { ... } }
Run Code Online (Sandbox Code Playgroud)

ActionScript将驱动我的JavaScript.更基本的问题是,如何使用webpack设置全局变量以便ExternalInterface可以看到它们(最好是作为模块的导出)?

我试过用expose-loader,exports-loader imports-loader没有运气.expose-loader理想情况下,我需要什么,但似乎不起作用.当我在我的模块中设置window.companyName并尝试在我的chrome控制台中验证它时,它会导致undefined.

小智 7

你不是在用webpack-dev-server

因为当我尝试webpack命令时一切正常.我正在通过输入window.mySampleGlobalVariablechrome开发人员工具来测试它.

但是当我运行webpack-dev-server命令时,我的窗口变量是未定义的.

我有这个示例应用程序:

app.js

window.mySampleGlobalVariable = 'TEST';
console.log('App is ready');
Run Code Online (Sandbox Code Playgroud)

的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>
Run Code Online (Sandbox Code Playgroud)

webpack.config.js

var path = require('path');

module.exports = {
    entry: './app.js',
    output: {
        filename: './bundle.js'
    },
    resolve: {
        extensions: ['', '.js']
    }
};
Run Code Online (Sandbox Code Playgroud)


Ric*_*ven 2

确实可以从Webpacked脚本访问 window 对象。Webpack 不会干扰它,因为包装器函数仅注入module,exports__webpack_require__参数。

尝试编写一个使用单行访问窗口对象的脚本,然后检查输出脚本。

您的分配应该有效,除非执行永远不会到达它或者某些加载程序正在更改相关代码。