javascript - Experimenting with babeljs+amd getting undefined for module -
i'm experimenting babel.js alongside requirejs. require given, can't drop sadly :( found in babeljs docs there's --modules amd cli flag transpiles es6 code amd defines. far good. made quick example "application" test out. here's structure:
. |-- build.sh |-- index.html |-- js | |-- assets | | |-- asseta.es6 | | |-- asseta.js | | |-- bootstrap.es6 | | `-- bootstrap.js | `-- main.js `-- node_modules index.html
<body> <p>hello world! html5 boilerplate.</p> <script type="text/javascript" src="node_modules/requirejs/require.js" data-main="js/main.js"></script> </body> main.js
(function() { require.config({ baseurl: "js/assets" }); require(["bootstrap"], function(bootstrap) { bootstrap.ready(function(sum) { console.log(sum(1,2,3)); }); }); }()); bootstrap.es6
import asseta 'asseta'; console.log(asseta); // undefined :(( export function ready(cb) { cb(asseta.sum); } asseta.es6
export function sum(...nums) { return nums.reduce(((acc, num) => acc += num), 0); } my problem application main.js loads bootstrap properly, if log out got existing object ready function in -> ok bootstrap module can't load asseta module properly. undefined :(
what missing?
additional info
the build.sh script transpiles .es6 files es5 .js
#!/bin/sh babel --modules amd js/assets/bootstrap.es6 -o js/assets/bootstrap.js babel --modules amd js/assets/asseta.es6 -o js/assets/asseta.js
it user error. missed default keyword in asseta.es6 like
export default function sum(...nums) { return nums.reduce(((acc, num) => acc += num), 0); } or other approach fix omit default keyword asseta refactor bootstrap as
import { sum } 'asseta';
Comments
Post a Comment