Appeler du code ES2015 compilé depuis une balise script en HTML

Par skaro42, il y a 7 ans


Bonjour,

Voila je rencontre un petit problème avec mon code. Je n'arrive pas à l'exécuter manuellement depuis une page web.
A la base, je rencontrai un problème avec IE11 qui n'était pas capable d'interpréter une classe JS donc je me suis dit, je vais écrire mon code en ES2015 que je compilerai avec webpack + babel pour pouvoir l'exécuter en l'occurence sur IE >= 11.

Ce que je fais

export function toto (value) { console.log(value) } toto('Salut')

Code compilé :

/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/dist/"; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = "./src/app.js"); /******/ }) /************************************************************************/ /******/ ({ /***/ "./src/app.js": /*!********************!*\ !*** ./src/app.js ***! \********************/ /*! exports provided: toto */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toto\", function() { return toto; });\nfunction toto(value) {\n console.log(value);\n}\n\ntoto('Salut');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXBwLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9hcHAuanM/MmM5NyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gdG90byAodmFsdWUpIHtcbiAgICBjb25zb2xlLmxvZyh2YWx1ZSlcbn1cblxudG90bygnU2FsdXQnKVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/app.js\n"); /***/ }) /******/ });

Code HTML :

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script type="text/javascript" src="./dist/main.js"></script> <script type="text/javascript"> toto('Bonjour') </script> </body> </html>

Ce que je veux

Pour appeler du code ES2015 compilé depuis une balise script dans une page HTML.
J'ai vu qu'il existait ce package http://k33g.github.io/2015/10/12/ES2015-2016.html mais je ne suis pas convaincu qu'il faille que j'installe un package en plus pour pouvoir exécuter simplement mon code.

Ce que j'obtiens

Salut <= de mon console.log depuis le code main.js ReferenceError: toto is not defined <= code appeler depuis la page web

J'espère que vous pourrez me guider vers une solution à mon problème.
Merci d'avance

3 réponses

Defy, il y a 7 ans

ben deja si tu export, il faut import de l'autre coté, donc enlève le export coté main et ca devrait marcher

skaro42, il y a 7 ans

J'ai déjà essayé sans succès, c'est toujours les mêmes erreurs qui apparaissent.
Et la compilation fonctionne bien, il a bien retiré le export

... eval("function toto(value) {\n console.log(value);\n}\n\ntoto('Salut'); ...