【问题标题】:ReactJS Unexpected Token ) on Safari onlyReactJS Unexpected Token ) 仅适用于 Safari
【发布时间】:2015-11-23 19:56:46
【问题描述】:

我只在 Safari 上收到SyntaxError: Unexpected token ")" - 此代码适用于所有其他浏览器。

我正在使用gulp 来编译我的文件,如下所示:

browserify(componentPath + "app.jsx")
    .transform(reactify)
    .transform(babelify)
    .bundle()
    .pipe(source('app.js'))
    .pipe(gulp.dest(buildPath));

语法错误突出显示以下内容:

return React.createElement(If, {
     condition: !_.isEmpty(title)
 }, React.createElement("div", {
     className: "row wrapper border-bottom white-bg page-heading"
 }, React.createElement("div", {
     className: "col-lg-9"
 }, React.createElement("h2", null, title || 'Untitled'), React.createElement("ol", {
     className: "breadcrumb"
 }, React.createElement("li", null, React.createElement("a", {
     onClick: () => self.history.pushState(null, home)
 }, "Home")), links.map(function(link, index) {
     var url = link.url;

     return React.createElement("li", {
         onClick: () => self.history.pushState(null, url),
         key: url,
         className: "ptr-click"
     }, index == links.length - 1 ? React.createElement("strong", null, link.title || 'Untitled') : link.title);
 })))));

我把整个部分都注释掉了,只是想看看它是否是这个特定的代码块,但是错误指向了另一个完全相同的代码块React.createElement

【问题讨论】:

  • 如果这段代码没有被进一步转译,可能是因为() => {}。我不相信 safari 目前可以执行箭头功能。 caniuse.com/#search=arrow

标签: javascript safari reactjs gulp


【解决方案1】:

考虑到mattclemens 注释,Safari 目前不执行箭头功能。所以我将我的gulp 脚本更新为:

browserify(componentPath + "app.jsx")
    .transform(reactify)
    .transform(babelify, {presets: ["es2015", "react"]})
    .bundle()
    .pipe(source('app.js'))
    .pipe(gulp.dest(buildPath));

当然,别忘了安装预设:

npm install babel-preset-es2015 babel-preset-react

这很好用,现在我的代码也可以在 Safari 上运行 :)

【讨论】:

    猜你喜欢
    • 2020-01-04
    • 2016-02-17
    • 2016-12-24
    • 2018-07-19
    • 1970-01-01
    • 2017-06-08
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多