尝试将以下文件与Webpack捆绑在一起失败
>错误在./~/pg/lib/native/index.js找不到模块:错误:无法 解决模块' pg-native'在 ... / node_modules / PG / lib目录/本地 @ ./~/pg/lib/native/index.js 9:13-33
我在 .babelrc 中尝试了几个ignore
语句,但没有让它运行...
我要捆绑的测试文件: handler.js
const Client = require('pg').Client;
console.log("done");
webpack.config.js
module.exports = {
entry: './handler.js',
target: 'node',
module: {
loaders: [{
test: /\.js$/,
loaders: ['babel'],
include: __dirname,
exclude: /node_modules/,
}]
}
};
.babelrc
{
"plugins": ["transform-runtime"],
"presets": ["es2015", "stage-1"]
}
的package.json
"dependencies": {
"postgraphql": "^2.4.0",
"babel-runtime": "6.11.6"
},
"devDependencies": {
"babel-core": "^6.13.2",
"babel-loader": "^6.2.4",
"babel-plugin-transform-runtime": "^6.12.0",
"babel-preset-es2015": "^6.13.2",
"babel-preset-stage-0": "^6.5.0",
"babel-polyfill": "6.13.0",
"serverless-webpack": "^1.0.0-rc.3",
"webpack": "^1.13.1"
}
有点相关的github问题:
答案 0 :(得分:4)
这确实是一个旧线程,但是仍然帮助了我。 Steve Schafer 1提供的解决方案很好,但不是最简单的。
相反,由MarcoLüthy2在链接的问题中提供的文件可能是最容易设置的,因为它是纯配置,甚至不需要创建虚拟文件。
它包括如下修改Webpack配置plugins
数组:
const webpack = require('webpack');
const webpackConfig = {
...
resolve: { ... },
plugins: [
new webpack.IgnorePlugin(/^pg-native$/)
],
output: { ... },
...
}
答案 1 :(得分:3)
这是一个旧线程,但问题仍然存在,因此对于任何遇到此问题的人,都有解决方法。问题是/professionals?categories.slug=foo
/professionals?categories.name=foo
/professionals?categories._id=(a id)
的编写方式与node-postgres
的代码重写方式之间存在相互作用,即使没有显式导入/要求,也迫使babel
加载。 / p>
最简单的解决方法是在您的pg-native
中添加几个别名,以使其链接到虚拟空文件中:
webpack.config.js
其中虚拟文件包含一行:
{
...
resolve: {
alias: {
...
'pg-native': path-to-dummy-js-file,
'dns': path-to-dummy-js-file
}
}
...
}
有关进一步的讨论和替代解决方法,请参见https://github.com/brianc/node-postgres/issues/838。
答案 2 :(得分:0)
你必须安装pg-native
npm install pg-native
答案 3 :(得分:0)
您可能在本地全局安装了pg-native。因此,数据包管理器在锁定文件中不包含pg-native。这是我在本地运行良好时遇到的一个问题,但是每次我在云Webpack中构建时,都会抱怨缺少pg-native。我通过删除推送到云中的文件中的锁文件(在本例中为seed.run)解决了该问题。