babel-node无法在node_modules中需要jsx文件

时间:2016-01-25 20:55:56

标签: javascript node.js reactjs babeljs

我知道babel-node默认会忽略node_modules,所以我用三种不同的方式来覆盖它,都失败了:

  1. 使用babel-node app.js

    运行.babelrc
    {
      "presets": ["es2015", "react"],
      "only": [
        "app",
        "node_modules/react-components"
      ]
    }
    

    结果:SyntaxError: Unexpected token <表示所需的jsx节点模块

  2. 使用babel-node app.js

    运行.babelrc
    {
      "presets": ["es2015", "react"],
      "ignore": "node_modules\/(?!react-components)"
    }
    

    结果:SyntaxError: Unexpected token <表示需要jsx节点模块

  3. 使用babel-node ./bin/www --ignore '/node_modules/(?!react-components)

    运行.babelrc
    {
      "presets": ["es2015", "react"]
    }
    

    结果:

    [project]/node_modules/babel-preset-react/node_modules/babel-plugin-transform-react-jsx/lib/index.js:12
        var visitor = require("babel-helper-builder-react-jsx")({
                                                               ^
    
    TypeError: object is not a function
    
  4. 使用带有ignore选项的register hook正常工作。

    node app.js

    的开头使用此代码运行app.js
    require('babel-core/register')({
        ignore: /node_modules\/(?!react-components)/
    });
    

    即使这样可行,我仍然想知道为什么babel-node的实现不起作用。感谢。

    的引用:

1 个答案:

答案 0 :(得分:2)

这是babel中的已知错误,它会忽略onlyignore

相关错误为T6726,已为fixed in babel 6.14.0