尝试将 class 导出为模块 ES6 babel
Trying to export a class as a module ES6 babel
我有一个 ES6 class,我正试图将其作为模块导出,但是我收到一个错误 SyntaxError: Unexpected reserved word
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());
我正在使用 browserify 和 babelify 转换为 ES6
browserify -t babelify main.js -o public/scripts/bundle.js",
我是否正确导出了 Car 模块,还是做错了什么?
我的问题是我正在开发一个同构 React.js 应用程序,babelify browserify 转换很好,我的 bundle.js 文件也被很好地转译。这是我脚本的服务器端部分的问题,因为它没有用 babel 编译成 ES6。
我希望这并不意味着我需要在我的源文件中复制我的 ES6 和 ES5,因为这是我试图避免的,并且通过 browserify babelify 转换我能够在 ES6 中编码并指向 main.js 文件。
这是我 example react server repository I was basing this on, I was basically using node-jsx 从节点中透明地 require() jsx,所以我只需要一种方法来使用 babel 来完成此操作。
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);
});
更新: 我认为与此类似 I can use either babel-node 或使用带 --harmony 标志的节点到 运行 具有 es6 功能的脚本
要求 babel/register 可以解决您的问题吗?
require('babel/register');
如此处所述:https://babeljs.io/docs/usage/require/
All subsequent files required by node with the extensions .es6, .es, .jsx and .js will be transformed by Babel. The polyfill is also automatically required.
答案是我可以使用 babel-node 或使用带有 --harmony 标志的节点来 运行 具有 es6 功能的脚本。
Here 是一些示例 alt/iso 使用 babel-node server
的同构 React 示例,它们演示了这种方法。
我有一个 ES6 class,我正试图将其作为模块导出,但是我收到一个错误 SyntaxError: Unexpected reserved word
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());
我正在使用 browserify 和 babelify 转换为 ES6
browserify -t babelify main.js -o public/scripts/bundle.js",
我是否正确导出了 Car 模块,还是做错了什么?
我的问题是我正在开发一个同构 React.js 应用程序,babelify browserify 转换很好,我的 bundle.js 文件也被很好地转译。这是我脚本的服务器端部分的问题,因为它没有用 babel 编译成 ES6。
我希望这并不意味着我需要在我的源文件中复制我的 ES6 和 ES5,因为这是我试图避免的,并且通过 browserify babelify 转换我能够在 ES6 中编码并指向 main.js 文件。
这是我 example react server repository I was basing this on, I was basically using node-jsx 从节点中透明地 require() jsx,所以我只需要一种方法来使用 babel 来完成此操作。
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);
});
更新: 我认为与此类似
要求 babel/register 可以解决您的问题吗?
require('babel/register');
如此处所述:https://babeljs.io/docs/usage/require/
All subsequent files required by node with the extensions .es6, .es, .jsx and .js will be transformed by Babel. The polyfill is also automatically required.
答案是我可以使用 babel-node 或使用带有 --harmony 标志的节点来 运行 具有 es6 功能的脚本。
Here 是一些示例 alt/iso 使用 babel-node server
的同构 React 示例,它们演示了这种方法。