【发布时间】:2016-06-01 19:16:09
【问题描述】:
我正在尝试在 ES6 中运行快速应用程序。我正在使用以下工作流程:
-
使用以下 gulp 任务将 ES6 转换为 ES5(在 .babelrc 中使用
"es2015"和"stage-0"预设):import gulp from 'gulp'; import gulpBabel from 'gulp-babel'; import sourcemaps from 'gulp-sourcemaps'; gulp.task('babel', () => { gulp.src([ 'someClass.js', 'app.js' ], {base: './', dot: false}) .pipe(sourcemaps.init()) .pipe(gulpBabel()) .pipe(sourcemaps.write('.')) .pipe(gulp.dest('./dist')); });这似乎工作正常。
运行
node dist/app.js。-
以下代码在
someClass.js:export default class SomeClass { someMethod() { return 1 + 1; } } -
最后,以下代码在
app.js:import SomeClass from './someClass'; //express config console.log(SomeClass); console.log(SomeClass.someMethod);
哪些日志:
[Function: SomeClass]
undefined
以下是相关的转译代码:
dist/app.js
var _someClass = require('./someClass');
var _someClass2 = _interopRequireDefault(_someClass);
console.log(_someClass2.default);
console.log(_someClass2.default.someMethod);
dist/someClass.js
var SomeClass = function () {
function SomeClass() {
_classCallCheck(this, SomeClass);
}
_createClass(SomeClass, [{
key: "someMethod",
value: function someMethod() {
return 1 + 1;
}
}]);
return SomeClass;
}();
exports.default = SomeClass;
为什么someMethod 未定义?
【问题讨论】:
-
console.log(SomeClass.someMethod());你必须调用方法来获取它的值。 -
我实际上是在尝试将它作为回调函数传递,所以我不希望它立即被调用。即使我这样做了,我也会收到
_someClass2.default.someMethod is not a function。
标签: javascript node.js ecmascript-6 babeljs