javascript - 使用 Gulp 任务时出现意外的 token 错误

标签 javascript node.js gulp babeljs

我正在尝试在 Gulp 中运行任务,但在 Linux 上运行时遇到问题。该任务似乎无法正常工作

function jsTask() {
    return gulp.src('./frontend/src/js/**/*.js')
        .pipe(babel())
        .pipe(gulp.dvest('frontend/js'));
}

gulp.task('js', jsTask);
gulp.task('js-watch', () => {
    return watch('./frontend/src/js/**/*.js', { ignoreInitial: false }, jsTask);
});

function lessTask() {
    return gulp.src(['./frontend/src/less/*-main.less'])
        .pipe(less())
        .pipe(cleanCSS({ compatibility: 'ie8' }))
        .pipe(gulp.dest('./public/css'));
}

gulp.task('less', lessTask);
gulp.task('less-watch', () => {
    return watch('./frontend/src/less/**/*.less', { ignoreInitial: false }, lessTask);
});

gulp.task('default', ['js', 'less']);
gulp.task('watch', ['js-watch', 'less-watch']);

当我运行 gulp js 命令时,出现以下错误

events.js:160
      throw er; // Unhandled 'error' event
      ^
SyntaxError: /var/www/myproject/frontend/src/js/iframe.js: 
   9 |
  10 | export const routes = (
> 11 |     <Route path="" component={({children}) => (children) }>
     |     ^
  12 |         <Route path="/not-found" component={NotFoundPage} />

最佳答案

您必须使用 Babel 来转译您的 JSX 和 ES2015 代码。 Babel 使用某些预设将您的代码转换为纯 JavaScript,但您没有传递任何预设,因此代码不会被转换为纯 JavaScript。因此,它会引发语法错误,因为 JSX 不是有效的 JavaScript。

您只是将 gulp-babel 用作 babel() ,没有任何预设,因此它不会转译您的代码。您需要告诉 Babel 使用某些预设首先,安装适用于您的预设:

npm install --save-dev babel-preset-react
npm install --save-dev babel-preset-es2015

这些命令将为 ES2015 和 React 安装适当的预设来转译代码。然后将它们作为 babel 的选项应用到您的 gulpfile 中:

return gulp.src('./frontend/src/js/**/*.js')
    .pipe(babel({
        presets: ['es2015', 'react']
    }))
    .pipe(gulp.dest('frontend/js'));

此外,请确保使用 gulp.dest 而不是 gulp.dvest。这应该可以正确地转译您的代码。

关于javascript - 使用 Gulp 任务时出现意外的 token 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44080120/

相关文章:

javascript - 更改亮度滤镜

javascript - 在Polymer回调中设置数组项属性值

javascript - 有没有办法从 Mongoose 模式中获取所有唯一的数组值?

javascript - 通过带有输入字段的嵌套 ul/li 结构进行过滤,如果输入为空,则重置为原始状态

javascript - jQuery 时间计数器

node.js - 删除node_modules,出现错误EPERM操作不允许

javascript - 我收到一条不存在的行的错误消息

angularjs - Angular 文件上的 Gulp 任务中断

gulp 错误内部/child_process.js :298 throw errnoException(err, 'spawn' );错误:生成 EACCES

javascript - 将多个库合并为一个库时无法使用库函数