J'essaie d'interfacer ActionScript avec JavaScript avec ExternalInterface
et webpack.
ExternalInterface
ne peut provoquer (call
) que des fonctions trouvées sur l'objet global (window
). Comment obtenir une référence de module webpack sur window
(objet global)?
Permettez-moi d’en élaborer quelques-unes. Je souhaite disposer d’un espace-noms pour la société (window.companyName
) avec une interface pour ExternalInterface
:
window.companyName = { isReady: function() { ... },
driver1: function() { ... },
driver2: function() { ... } }
Le code ActionScript pilotera mon JavaScript. La question la plus fondamentale est de savoir comment définir des éléments globaux à l'aide de webpack afin que ExternalInterface
puisse les voir (de préférence en tant qu'exportations d'un module).
J'ai essayé d'utiliser expose-loader
, exports-loader
imports-loader
sans succès. expose-loader
est idéalement ce dont j'ai besoin, mais ne semble pas fonctionner. Lorsque je définis window.companyName dans mes modules et que j'essaie de le vérifier dans ma console Chrome, il en résulte undefined
.
N'utilisez-vous pas webpack-dev-server
?
Parce que quand j'essaie webpack
command tout fonctionne bien. Je le teste en tapant window.mySampleGlobalVariable
dans les outils de développement de Chrome.
MAISlorsque je lance la commande webpack-dev-server
, ma variable window est indéfinie.
J'ai cet exemple d'application:
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']
}
};
Vous do _ avez accès à l'objet window à partir de votre script webpacked. Webpack n'interfère pas avec cela puisque la fonction wrapper n'injecte que les arguments module
, exports
et __webpack_require__
.
Essayez d’écrire un script avec une seule ligne d’objet fenêtre, puis extrayez le script de sortie.
Votre affectation devrait fonctionner, sauf si l'exécution ne l'atteint jamais ou si un chargeur modifie le code approprié.
Si vous exécutez webpack-dev-server
avec l'iframe, vous ne pourrez pas accéder à la variable via la console Chrome.