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

Posted

技术标签:

【中文标题】babel-node 无法在 node_modules 中需要 jsx 文件【英文标题】:babel-node fails to require jsx file in node_modules 【发布时间】:2016-05-02 07:53:22 【问题描述】:

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

    运行babel-node app.js.babelrc

    
      "presets": ["es2015", "react"],
      "only": [
        "app",
        "node_modules/react-components"
      ]
    
    

    结果:SyntaxError: Unexpected token < 用于所需的 jsx 节点模块

    运行babel-node app.js.babelrc

    
      "presets": ["es2015", "react"],
      "ignore": "node_modules\/(?!react-components)"
    
    

    结果:SyntaxError: Unexpected token < 用于 require jsx 节点模块

    运行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
    

使用带有忽略选项的注册钩子可以正常工作。

app.js开头的这段代码运行node app.js

require('babel-core/register')(
    ignore: /node_modules\/(?!react-components)/
);

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


参考:

How do I use babel in a node CLI program? import a module from node_modules with babel but failed http://babeljs.io/docs/usage/cli/ http://babeljs.io/docs/usage/options/

【问题讨论】:

有没有想过这个问题? 【参考方案1】:

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

相关的bug是T6726,一直是fixed in babel 6.14.0。

【讨论】:

以上是关于babel-node 无法在 node_modules 中需要 jsx 文件的主要内容,如果未能解决你的问题,请参考以下文章

[NODEMON]- babel-node 未被识别为内部或外部命令

package.json 启动脚本,babel-node:在 heroku deploy 上找不到

如何在反应中处理进口地狱?

nodemon,babel-node:如何设置环境变量?

项目中安装babel-node

babel-node vs node:带有导入/导出的graphql文件