对象传播在 Node 7.5 中不起作用
Object spread not working in Node 7.5
// Rest properties
require("babel-core").transform("code", {
plugins: ["transform-object-rest-spread"]
});
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
console.log(x); // 1
console.log(y); // 2
console.log(z); // { a: 3, b: 4 }
// Spread properties
let n = { x, y, ...z };
console.log(n); // { x: 1, y: 2, a: 3, b: 4 }
我正在尝试 http://babeljs.io/docs/plugins/transform-object-rest-spread/ 中的上述示例,但它不起作用。
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
^^^
SyntaxError: Unexpected token ...
at Object.exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:543:28)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:418:7)
at startup (bootstrap_node.js:139:9)
at bootstrap_node.js:533:3
如果我 运行 它与 babel-node
则它工作正常。知道为什么吗?
require("babel-core").transform("code", {
plugins: ["transform-object-rest-spread"]
});
这是节点 API,用于转换作为 .transform()
函数的第一个参数给出的代码。您需要将 "code"
替换为您要转换的实际代码。它不会触及任何文件。您不对返回的代码执行任何操作,但您尝试使用 Node 定期 运行 文件的其余部分,Node 尚不支持对象展开运算符。您要么必须执行生成的代码,要么将其写入文件,您可以 运行 使用 Node.
这是一个示例,您可以如何使用节点 API:
转译您的代码
const babel = require('babel-core');
const fs = require('fs');
// Code that will be transpiled
const code = `let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
console.log(x); // 1
console.log(y); // 2
console.log(z); // { a: 3, b: 4 }
// Spread properties
let n = { x, y, ...z };
console.log(n); // { x: 1, y: 2, a: 3, b: 4 }`
const transformed = babel.transform(code, {
plugins: ["transform-object-rest-spread"]
});
// Write transpiled code to output.js
fs.writeFileSync('output.js', transformed.code);
在 运行 之后,您有一个文件 output.js
转换对象传播。然后你可以 运行 它与:
node output.js
另见 babel.transform。
你可能不会使用节点 API,除非你想对代码做一些非常具体的事情,这是某种分析或转换,但肯定不会 运行宁它。或者当然,当您将它集成到需要以编程方式转换代码的工具中时。
如果您只想 运行 代码,请使用 babel-node
. If you want to just transpile it, use the babel
可执行文件。
您可以检查Node.js ES2015 Support. Nodejs object rest/spread properties
is supported form v8.3。
let person = {id:1, name: 'Mahbub'};
let developer = {...person, type: 'nodeJs'};
let {name, ...other} = {...developer};
console.log(developer); // --> { id: 1, name: 'Mahbub', type: 'nodeJs' }
console.log(name); // --> Mahbub
console.log(other); // --> { id: 1, type: 'nodeJs' }
// Rest properties
require("babel-core").transform("code", {
plugins: ["transform-object-rest-spread"]
});
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
console.log(x); // 1
console.log(y); // 2
console.log(z); // { a: 3, b: 4 }
// Spread properties
let n = { x, y, ...z };
console.log(n); // { x: 1, y: 2, a: 3, b: 4 }
我正在尝试 http://babeljs.io/docs/plugins/transform-object-rest-spread/ 中的上述示例,但它不起作用。
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
^^^
SyntaxError: Unexpected token ...
at Object.exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:543:28)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:418:7)
at startup (bootstrap_node.js:139:9)
at bootstrap_node.js:533:3
如果我 运行 它与 babel-node
则它工作正常。知道为什么吗?
require("babel-core").transform("code", {
plugins: ["transform-object-rest-spread"]
});
这是节点 API,用于转换作为 .transform()
函数的第一个参数给出的代码。您需要将 "code"
替换为您要转换的实际代码。它不会触及任何文件。您不对返回的代码执行任何操作,但您尝试使用 Node 定期 运行 文件的其余部分,Node 尚不支持对象展开运算符。您要么必须执行生成的代码,要么将其写入文件,您可以 运行 使用 Node.
这是一个示例,您可以如何使用节点 API:
转译您的代码const babel = require('babel-core');
const fs = require('fs');
// Code that will be transpiled
const code = `let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
console.log(x); // 1
console.log(y); // 2
console.log(z); // { a: 3, b: 4 }
// Spread properties
let n = { x, y, ...z };
console.log(n); // { x: 1, y: 2, a: 3, b: 4 }`
const transformed = babel.transform(code, {
plugins: ["transform-object-rest-spread"]
});
// Write transpiled code to output.js
fs.writeFileSync('output.js', transformed.code);
在 运行 之后,您有一个文件 output.js
转换对象传播。然后你可以 运行 它与:
node output.js
另见 babel.transform。
你可能不会使用节点 API,除非你想对代码做一些非常具体的事情,这是某种分析或转换,但肯定不会 运行宁它。或者当然,当您将它集成到需要以编程方式转换代码的工具中时。
如果您只想 运行 代码,请使用 babel-node
. If you want to just transpile it, use the babel
可执行文件。
您可以检查Node.js ES2015 Support. Nodejs object rest/spread properties
is supported form v8.3。
let person = {id:1, name: 'Mahbub'};
let developer = {...person, type: 'nodeJs'};
let {name, ...other} = {...developer};
console.log(developer); // --> { id: 1, name: 'Mahbub', type: 'nodeJs' }
console.log(name); // --> Mahbub
console.log(other); // --> { id: 1, type: 'nodeJs' }