我使用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系统上构建完全相同的项目都可以完美运行,因此它似乎是一个特定于平台的问题。
答案 0 :(得分:-2)
我认为您正在其中一个Javascript文件中使用或导入'pg-native'模块。
如果您希望它工作,请安装该模块 npm install pg-native --save 如果您不想使用'pg-native',那么您最好重构代码并删除它的使用