代码之家  ›  专栏  ›  技术社区  ›  Andrew

为什么当嵌套PACKAG.JSON存在时WebPACK无法编译

  •  0
  • Andrew  · 技术社区  · 5 年前

    src/
    --ui/
    --lib/
    ----async-store/
    ------create-inject-reducer-hoc.jsx
    ------package.json <<=== this package.json
    --package.json
    --index.js
    --webpack.config.js
    

    项目无法生成,出现错误:

    ERROR in ./lib/async-store/create-inject-reducer-hoc.jsx
    Module build failed (from ../node_modules/babel-loader/lib/index.js):
    SyntaxError: \src\lib\async-store\create-inject-reducer-hoc.jsx: Unexpected token (34:11)
    
      32 |     }, [])
      33 |
    > 34 |     return <WrappedComponent {...props} />
         |            ^
      35 |   }
      36 |   return memo(InjectedState)
      37 | }
    
    

    此处Web包配置

    module.exports = {
      mode: 'development',
      context: path.join(__dirname, '../src'),
      entry: './index.js',
      output: {
        filename: 'bundle.js'
      },
      module: {
        rules: [
          {
            test: /\.jsx?$/,
            use: ['babel-loader']
          }
        ]
      },
      resolve: {
        extensions: ['.jsx', '.js']
      },
      plugins: [new HtmlWebpackPlugin()],
      devServer: {
        contentBase: path.join(__dirname, '../dist'),
        compress: true,
        port: 9000
      }
    }
    
    {
        "presets": ["@babel/preset-react", "@babel/preset-env"],
        "plugins": [
            ["babel-plugin-styled-components", { "ssr": false }]
        ]
    }
    

    行动: lib/async-store/ 项目将成功生成

    问题: webpack构建过程和嵌套package.json有什么关系?

    0 回复  |  直到 5 年前
        1
  •  3
  •   chipit24    5 年前

    这似乎是由于巴贝尔是如何配置的。任何带有 package.json 包.json 文件,你基本上有 .

    因为你用的是 .babelrc https://babeljs.io/docs/en/config-files#file-relative-configuration ,将适用于您:

    巴贝尔 […]文件通过搜索目录结构[…]。一旦目录包含 包.json 巴贝尔 文件仅适用于其自身包中的文件

    没有进一步的配置,webpack,使用babel loader,将遇到包含 包.json 文件,不会对其应用任何转换。因此,它抱怨它看到的JSX,因为它没有被编译。

    有两种解决方案,您已经提到过其中一种:

    1. 包.json 文件。不管怎样,你为什么需要它?
    2. 巴贝尔 配置文件到 babel.config.js 配置文件。为什么?更多详情请访问 https://babeljs.io/docs/en/config-files#monorepos babel.config.js网站

      您可以看到如何配置 babel.config.js网站 https://babeljs.io/docs/en/configuration#babelconfigjs .