【问题标题】:Browserify Error: Parsing file, Unexpected tokenBrowserify 错误:解析文件,意外的令牌
【发布时间】:2015-07-08 20:13:16
【问题描述】:

我正在尝试将这个 npm module 与 browserify 一起使用。

当我运行$ browserify build/widget.js -o bundle.js 时,我收到以下错误:

Error: Parsing file /Users/nir/browsewidget/node_modules/react-spin/src/main.js: Unexpected token (29:6)
    at Deps.parseDeps (/usr/local/lib/node_modules/browserify/node_modules/module-deps/index.js:436:28)
    at fromSource (/usr/local/lib/node_modules/browserify/node_modules/module-deps/index.js:375:44)
    at /usr/local/lib/node_modules/browserify/node_modules/module-deps/index.js:369:17
    at ConcatStream.<anonymous> (/usr/local/lib/node_modules/browserify/node_modules/concat-stream/index.js:36:43)
    at ConcatStream.emit (events.js:129:20)
    at finishMaybe (/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_writable.js:460:14)
    at endWritable (/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_writable.js:469:3)
    at ConcatStream.Writable.end (/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_writable.js:436:5)
    at DuplexWrapper.onend (/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_readable.js:537:10)
    at DuplexWrapper.g (events.js:199:16)

注意:build/widget.js 文件不是 JSX,它是使用 JSX compiler 构建的。

为什么我会收到意外的令牌?

根据 snozza 的回答进行编辑:

我已经安装了npm install reactify --save。

然后我跑了% browserify -t reactify build/widget.js 这给了-bash: fg: %: no such job

然后我尝试了browserify -t reactify build/widget.js ,它给出了:

Error: Parsing file /Users/nir/browsewidget/node_modules/react-spin/src/main.js: Unexpected token (29:6)
    at Deps.parseDeps (/usr/local/lib/node_modules/browserify/node_modules/module-deps/index.js:436:28)
    at fromSource (/usr/local/lib/node_modules/browserify/node_modules/module-deps/index.js:375:44)
    at /usr/local/lib/node_modules/browserify/node_modules/module-deps/index.js:369:17
    at ConcatStream.<anonymous> (/usr/local/lib/node_modules/browserify/node_modules/concat-stream/index.js:36:43)
    at ConcatStream.emit (events.js:129:20)
    at finishMaybe (/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_writable.js:460:14)
    at endWritable (/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_writable.js:469:3)
    at ConcatStream.Writable.end (/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_writable.js:436:5)
    at DuplexWrapper.onend (/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_readable.js:537:10)
    at DuplexWrapper.g (events.js:199:16)

根据要求,这是我的build/widget.js 的 sn-p:

    var React =require('react');
    var Spinner = require('react-spin')

    var Loading = React.createClass({displayName: "Loading",
        render: function() {
            var spinCfg ={
              lines: 5 // The number of lines to draw
              , length: 5 // The length of each line
              , width: 42 // The line thickness
              , radius: 21 // The radius of the inner circle
              , scale: 1 // Scales overall size of the spinner
              , corners: 1 // Corner roundness (0..1)
              , color: '#000' // #rgb or #rrggbb or array of colors
              , opacity: 0.25 // Opacity of the lines
              , rotate: 0 // The rotation offset
              , direction: 1 // 1: clockwise, -1: counterclockwise
              , speed: 1 // Rounds per second
              , trail: 60 // Afterglow percentage
              , fps: 20 // Frames per second when using setTimeout() as a fallback for CSS
              , zIndex: 2e9 // The z-index (defaults to 2000000000)
              , className: 'spinner' // The CSS class to assign to the spinner
              , top: '50%' // Top position relative to parent
              , left: '50%' // Left position relative to parent
              , shadow: false // Whether to render a shadow
              , hwaccel: false // Whether to use hardware acceleration
              , position: 'absolute' // Element positioning
            };

            return React.createElement(Spinner, {config: spinCfg})
        }
    })

//...etc...

有什么想法吗?

【问题讨论】:

    标签: javascript node.js npm reactjs browserify


    【解决方案1】:

    查看react-spinhttps://github.com/thomasboyt/react-spin/blob/master/src/main.js的main.js文件,确实包含JSX语法,即:

    return (
          <span ref="container" />
    );
    

    这会导致 browserify 解析该文件时出现解析错误。 您可以将 https://www.npmjs.com/package/reactify 之类的转换器与 browserify 结合使用,将 JSX 转换为 vanilla JS。

    编辑:Reactify 示例

    由于它是必需的 node_module 也需要进行转换,因此您需要将 browserify/reactify 转换选项添加到 react-spin 的 package.json 中。转到 react-spin 文件夹并将其复制到包 json 中,在 "main" 下:

    "browserify": {"transform": ["reactify"]},
    

    然后尝试再次运行 browserify 命令

    【讨论】:

    • 我已经根据你的回答更新了我的问题,如果可以的话,看看吧。
    • 我无法分享所有内容,但我添加了一个 sn-p。
    • 将该行应用到 react-spin 的 package.json 之后,我输入了 browserify -t reactify build/widget.js,我得到:Error: Cannot find module 'react' from '/Users/nir/browsewidget/build'
    • 忽略这一点,也只需npm install react --save。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2019-02-19
    • 2017-11-21
    • 2013-09-26
    • 2018-09-12
    • 2017-07-16
    • 1970-01-01
    相关资源
    最近更新 更多