我有一个ES6类,我试图将其导出为模块,但是我收到错误 SyntaxError:意外的保留字
Car.js
class Car {
constructor(make) {
this.make = make;
this.currentSpeed = 25;
}
printCurrentSpeed(){
console.log(this.make + ' is going ' + this.currentSpeed + ' mph.');
}
}
module.exports = Car;
我正在尝试像这样使用Car模块
main.js
var Car = require("./models/Car");
let must = new Car('Mustang');
console.log(must.printCurrentSpeed());
我正在使用带有babelify的browserify转换为ES6
browserify -t babelify main.js -o public/scripts/bundle.js",
我是否正确导出Car模块,或者我做错了什么?
答案 0 :(得分:2)
要求babel / register解决您的问题吗?
require('babel/register');
如上所述:https://babeljs.io/docs/usage/require/
具有扩展名.es6,.es,.jsx和.js的节点所需的所有后续文件将由Babel转换。自动填充也是自动填充的。
答案 1 :(得分:1)
我的问题是我正在研究一个同构的React.js应用程序,并且babelify browserify转换很好,我的bundle.js文件正在被编译好。这是我的脚本的服务器端部分的问题,因为这没有被编译到带有babel的ES6。
我希望这并不意味着我需要在我的源文件中复制我的ES6和ES5副本,因为这是我试图避免的,并且使用browserify babelify转换我能够在ES6中进行编码而且只是指向main.js文件。
这是我的example react server repository我基于此,我基本上使用node-jsx透明地要求()来自节点内的jsx,所以我只需要一种方法用babel来做这个。 / p>
require('node-jsx').install();
var express = require('express');
var React = require('react');
var APP = require('./app'); // the JSX app with calls to ES6 modules
var app = express();
var port = 3000;
var ip = '127.0.0.1';
app.get('/', function(req, res) {
var markup = React.renderToString(APP());
res.send(markup);
});
更新:我认为与此question类似我可以使用babel-node或使用带有--harmony标志的节点来运行带有es6功能的脚本
答案 2 :(得分:0)
答案是我可以使用babel-node或使用带有--harmony标志的节点来运行带有es6功能的脚本。
Here是使用babel-node server
演示此方法的示例alt / iso Isomorphic React示例。