【发布时间】:2017-08-05 02:18:39
【问题描述】:
这让我发疯了,所以我希望有人能看到我错过的东西。提前感谢您的帮助。
我有一个 gulp 文件,我已经通过 npm、babel-core、babel-preset-es2015、babel-preset-react 安装。通过在线研究并寄予厚望,即使这可能不正确,我已将 gulp 文件重命名为 gulpfile.babel.js 并使用
创建了一个 .babelrc 文件{
"presets": ["es2015"]
}
我正在使用 browsersync,当我启动 gulp 任务时,会加载 html 文件,但我拥有的 index.js 包含“import React ....”。此文件导致 JS 控制台中出现“未捕获的语法错误:意外的令牌导入”错误。
我认为我拥有的 es2015 npm 包应该处理 ES6 语法?
在 gulp 文件中,我认为应该处理的任务是;
// convert jsx to JS
gulp.task('babelFiles', function() {
return gulp.src('js/*.(jsx|js)')
.pipe(babel({
compact: false
}))
.pipe(gulp.dest('js'))
.pipe(browserSync.reload({
stream: true
}))
});
负责启动它的 gulp 任务是:
// Default task
gulp.task('default', ['babelFiles', 'browserSync']);
我很困惑这里可能有什么问题?
任何想法将不胜感激!
【问题讨论】:
-
这可能只是因为在您的“默认”调用中,任务“babelfiles”和“browserSync”的顺序不能保证以任何可预测的顺序完成。这些任务是并行运行的。所以也许 browserSync 试图在 babelFiles 有机会 babelify 之前加载你的 js。我会尝试使 'browserSync 任务依赖于 babelFiles 任务。
-
@Mark:我将 babelFiles 任务设置为 browserSync 任务的先决条件,但仍然遇到同样的问题。
标签: npm ecmascript-6 gulp babeljs