WebPack正试图加载所有必需的模块,然后打破

时间:2017-12-04 14:51:56

标签: node.js webpack require webpack-2

我使用webpack构建一个项目,客户端和服务器端共享某些概念(共享状态)。因此,我已经设置了webpack来编译它们的两个,如下所示:

const path = require('path')

module.exports = [
  {
    entry: './lib/client.js',
    output: {
      filename: 'bundle.js',
      path: path.resolve(__dirname, 'static')
    },
    module: {
      rules: [
        {
          test: /\.js$/,
          exclude: /(node_modules|bower_components)/,
          use: {
            loader: 'babel-loader',
            options: {
              presets: ['babel-preset-env', 'babel-preset-react']
            }
          }
        }
      ]
    }
  },
  {
    entry: './lib/server.js',
    target: 'node',
    output: {
      filename: 'index.js',
      path: path.resolve(__dirname)
    }
  }
]

不幸的是,当这个编译时,webpack似乎正在加载服务器端的每个require模块,并在它无法找到它们时打破。它甚至试图加载一些.node模块,导致它输出警告。

它最终破坏了这个错误,可能是因为我的服务器代码中包含require('pg')

 ERROR in ./node_modules/pg/lib/native/client.js
    Module not found: Error: Can't resolve 'pg-native' in 'C:\...\node_modules\pg\lib\native'
     @ ./node_modules/pg/lib/native/client.js 10:13-33
     @ ./node_modules/pg/lib/native/index.js
     @ ./node_modules/pg/lib/index.js
     @ ./lib/server.js

如何让它忽略所需的模块,并将它们作为常规require调用保存在输出中? target: 'node'似乎没有帮助。

更新:无论出于何种原因,尝试在我的Linux系统上构建完全相同的项目都可以完美运行,因此它似乎是一个特定于平台的问题。

1 个答案:

答案 0 :(得分:-2)

  

我认为您正在其中一个Javascript文件中使用或导入'pg-native'模块。

     

如果您希望它工作,请安装该模块 npm install pg-native --save   如果您不想使用'pg-native',那么您最好重构代码并删除它的使用