簡體   English   中英

使用webpack,babel-preset-env用於將節點es6模塊轉換為es5

[英]With webpack, babel-preset-env for node transpiles es6 modules to es5

當我將webpack與babel-preset-env配置為使用此配置的節點時:

{
    target: 'node',
    context: __dirname,
    entry: {
      server: ['./src/server.js'],
    },
    output: {
      filename: '[name].bundle.js',
      chunkFilename: '[name].bundle.js',
      path: path.join(__dirname, '/dist'),
    },
    module: {
      rules: [{
        test: /\.js$/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: [
              ['env', {
                targets: {
                  node: "current",
                },
              }],
              'react'
            ],
          },
        },
      }],
    },
}

我的服務器使用了一些es模塊,它們可以通過webpack很好地檢測到,例如:

[319] ./node_modules/react-router-dom/es/withRouter.js 395 bytes {0} [built]

我的問題是es模塊在捆綁包中被翻譯成es5 ,我做錯了什么?

Webpack 3.6 babel預設節點1.6

您應該將libraryTarget添加到您的配置中:

output: {
  filename: ...,
  pathL ...,
  libraryTarget: 'commonjs2'
},

es模塊目前在節點中不受支持(僅在使用flag運行時才受支持),因此我認為webpack的輸出很好。

抱歉,es模塊不是用es6編寫的,而是將es5替換為import。 因此,為了使用來自node_modules /的es6代碼,我們似乎不得不使用其src /文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM