如何使用webpack 2和babel构建ES6 express应用程序?

时间:2017-06-08 01:03:35

标签: node.js express webpack ecmascript-6 webpack-2

鉴于以下 Webpack 2 配置,我想使用ES6编写一个快速应用程序。我的.babelrc只有es2015预设:

const path = require('path');

module.exports = {
  target: 'node',

  entry: path.resolve(__dirname, 'src', 'server.js'),

  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'server.bundle.js',
  },

  module: {
    loaders: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: 'babel-loader',
      },
    ],
  },
};

运行webpack并启动服务器工作正常,但是当通过浏览器访问URL时,我收到以下错误:

Error: Cannot find module "."
    at webpackMissingModule (/Users/Me/project/dist/server.bundle.js:18208:74)

我不知道是否由.电话中的require('./some/other/file')引起(并非所有文件都是ES6,因此这些文件使用require()代替import);或者我可能缺少一些配置。

而且,考虑到堆栈跟踪,我无法将其真正映射到原始源文件。

提前致谢

更新1

我只是意识到我正在尝试使用webpack来转换ES6代码,因为我试图复制另一个构建任务(mern.io中的那个),但我可以做同样的事情巴贝尔。也许没有理由在服务器端使用webpack。

2 个答案:

答案 0 :(得分:1)

您需要安装并添加webpack.config.js ExternalsPlugin:

2014-02-12T14:50:25Z

它帮助了我,我也希望你,因为我花了很多时间来解决这个问题)

答案 1 :(得分:0)

也许原因是您在webpack配置中使用目标:"节点" 。这意味着它为nodejs环境创建了包。您可以在将其更改为目标:" web" 进行客户端迁移后进行测试吗?

https://webpack.js.org/concepts/targets/