Skip to main content
2 of 14
test: wrap a function on the existing code

How to get org-babel source block working with ES6-7

I'm having difficulty getting org-babel to evaluate this block of code with

emacs v24.5
node v5.0.0
babel-node v.6.6.5

 #+BEGIN_SRC js :cmd "babel-node" let arr = [1, 2]; let [x, y] = arr; console.log(x); console.log(y); #+END_SRC 

The output looks like this
/tmp/babel-3700Vaq/js-script-37003RN:2
let arr = [1, 2]; ^^^ SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:404:25) at loader (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:5) at Object.require.extensions.(anonymous function) [as .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) at Module.load (module.js:356:32) at Function.Module._load (module.js:311:12) at Function.Module.runMain (module.js:457:10) at /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 at Object. (/usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) at Module._compile (module.js:425:26)*

But this source block seems fine

 #+BEGIN_SRC js :cmd "babel-node" const numbers = [10,20,30,50]; const multiplyBy10 = numbers.map(a => a * 10); console.log(multiplyBy10); #+END_SRC #+RESULTS: | 100 | 200 | 300 | 500 | 

>Edit: Added self executing function with "use strict"
 #+BEGIN_SRC js :cmd "babel-node" (function xy() { "use strict"; let arr = [1, 2]; let [x, y] = arr; console.log(x); console.log(y); })() #+END_SRC #+RESULTS: 
 /tmp/babel-13529OHt/js-script-13529MVq:6 let [x, y] = arr; ^ SyntaxError: Unexpected token [ at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:404:25) at loader (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:5) at Object.require.extensions.(anonymous function) [as .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) at Module.load (module.js:356:32) at Function.Module._load (module.js:311:12) at Function.Module.runMain (module.js:457:10) at /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 at Object. (/usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) at Module._compile (module.js:425:26) 

The output looks like this