我对我的无服务器项目有一个问题。
这是我的webpack配置:
// webpack.config.js
const path = require('path');
const webpack = require('webpack');
module.exports = {
target: 'node',
plugins: [
new webpack.IgnorePlugin({ resourceRegExp: /^pg-native$/})
],
module: {
rules: [
{
loader: 'ts-loader',
options: {
transpileOnly: true
},
}
]
},
resolve: {
extensions: ['.ts', '.js', '.tsx', '.jsx']
},
output: {
libraryTarget: 'commonjs',
path: path.join(__dirname, '.webpack'),
filename: 'handler.js'
},
mode: 'development'
};和我的serverless.yml:
provider:
name: aws
region: "eu-west-1"
stage: dev
timeout: 10
custom:
webpack:
webpackConfig: webpack.config.js
includeModules: false # this is telling webpack to reference all dependencies (non-dev dependencies) in node_modules and serverless would upload the package.json with the node_modules folder
# forceExclude:
# - pg-native
package:
individually: true
plugins:
- serverless-webpack
- serverless-plugin-typescript
- serverless-offline和package.json:
"dependencies": {
"@babel/types": "^7.12.12",
"@types/aws-lambda": "^8.10.61",
"@types/bcrypt": "^3.0.0",
"@types/bcryptjs": "^2.4.2",
"@types/gapi": "0.0.39",
"@types/pg": "^7.14.7",
"@types/uuid": "^8.3.0",
"axios": "^0.21.0",
"bcryptjs": "^2.4.3",
"googleapis": "^66.0.0",
"pg": "^8.5.1",
"query-string": "^6.13.7",
"serverless": "^1.78.1",
"serverless-offline": "^6.5.0",
"serverless-plugin-typescript": "^1.1.9",
"typescript": "^3.9.7"
},
"devDependencies": {
"@babel/core": "^7.12.9",
"@babel/preset-env": "^7.12.7",
"@types/jest": "^26.0.16",
"babel-jest": "^26.6.3",
"copy-webpack-plugin": "^7.0.0",
"jest": "^26.6.3",
"serverless-webpack": "^5.3.5",
"ts-jest": "^26.4.4",
"ts-loader": "^8.0.12",
"webpack": "^5.11.0",
"webpack-node-externals": "^2.5.2"
}我无法删除的错误是:
PS C:\Users\sg\Desktop\CODE\sc-server> serverless deploy
Serverless: Running "serverless" installed locally (in service node_modules)
Serverless: Configuration warning at root: unrecognized property 'name'
Serverless:
Serverless: Learn more about configuration validation here: http://slss.io/configuration-validation
Serverless:
Serverless: Bundling with Webpack...
asset handler.js 340 KiB [emitted] (name: handler)
modules by path ./node_modules/ 279 KiB 56 modules
19 modules
ERROR in ./node_modules/pg/package.json
Module build failed (from ./node_modules/ts-loader/index.js):
Error: Debug Failure. Output generation failed
at Object.transpileModule (C:\Users\sg\Desktop\CODE\sc-server\node_modules\typescript\lib\typescript.js:123670:29)
at getTranspilationEmit (C:\Users\sg\Desktop\CODE\sc-server\node_modules\ts-loader\dist\index.js:390:75)
at successLoader (C:\Users\sg\Desktop\CODE\sc-server\node_modules\ts-loader\dist\index.js:38:11)
at Object.loader (C:\Users\sg\Desktop\CODE\sc-server\node_modules\ts-loader\dist\index.js:23:5)
@ ./node_modules/pg/lib/native/client.js 5:10-39
@ ./node_modules/pg/lib/native/index.js 2:0-36
@ ./node_modules/pg/lib/index.js 23:28-47 34:32-51
@ ./initialization/Database.ts 4:13-26
@ ./handler.ts 4:19-55
webpack compiled with 1 error in 89280 ms
Error --------------------------------------------------
Error: Webpack compilation error, see above
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\serverless-webpack\lib\compile.js:36:17
at arrayEach (C:\Users\sg\Desktop\CODE\sc-server\node_modules\lodash\lodash.js:516:11)
at Function.forEach (C:\Users\sg\Desktop\CODE\sc-server\node_modules\lodash\lodash.js:9368:14)
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\serverless-webpack\lib\compile.js:29:9
at tryCatcher (C:\Users\sg\Desktop\CODE\sc-server\node_modules\bluebird\js\release\util.js:16:23)
at Promise._settlePromiseFromHandler (C:\Users\sg\Desktop\CODE\sc-server\node_modules\bluebird\js\release\promise.js:547:31)
at Promise._settlePromise (C:\Users\sg\Desktop\CODE\sc-server\node_modules\bluebird\js\release\promise.js:604:18)
at Promise._settlePromise0 (C:\Users\sg\Desktop\CODE\sc-server\node_modules\bluebird\js\release\promise.js:649:10)
at Promise._settlePromises (C:\Users\sg\Desktop\CODE\sc-server\node_modules\bluebird\js\release\promise.js:729:18)
at Promise._fulfill (C:\Users\sg\Desktop\CODE\sc-server\node_modules\bluebird\js\release\promise.js:673:18)
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\bluebird\js\release\nodeback.js:42:21
at finalCallback (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\MultiCompiler.js:375:12)
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\MultiCompiler.js:398:6
at done (C:\Users\sg\Desktop\CODE\sc-server\node_modules\neo-async\async.js:2931:13)
at runCompilers (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\MultiCompiler.js:285:48)
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\MultiCompiler.js:292:7
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\MultiCompiler.js:391:7
at finalCallback (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\Compiler.js:388:32)
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\Compiler.js:452:17
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\HookWebpackError.js:69:3
at Hook.eval [as callAsync] (eval at create (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:6:1)
at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\node_modules\tapable\lib\Hook.js:18:14)
at Cache.storeBuildDependencies (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\Cache.js:122:37)
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\Compiler.js:448:19
at Hook.eval [as callAsync] (eval at create (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:15:1)
at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\node_modules\tapable\lib\Hook.js:18:14)
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\Compiler.js:445:23
at Compiler.emitRecords (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\Compiler.js:820:39)
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\Compiler.js:437:11
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\Compiler.js:802:14
at Hook.eval [as callAsync] (eval at create (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:6:1)
at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\node_modules\tapable\lib\Hook.js:18:14)
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\Compiler.js:799:27
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\neo-async\async.js:2818:7
at done (C:\Users\sg\Desktop\CODE\sc-server\node_modules\neo-async\async.js:3522:9)
at Hook.eval [as callAsync] (eval at create (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:6:1)
at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\node_modules\tapable\lib\Hook.js:18:14)
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\webpack\lib\Compiler.js:667:33
at C:\Users\sg\Desktop\CODE\sc-server\node_modules\graceful-fs\graceful-fs.js:144:16
at C:\Users\sg\AppData\Roaming\npm\node_modules\serverless\node_modules\graceful-fs\graceful-fs.js:144:16
at C:\Users\sg\AppData\Roaming\npm\node_modules\serverless\node_modules\graceful-fs\graceful-fs.js:61:14
at FSReqCallback.oncomplete (fs.js:146:23)
For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable.
Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Issues: forum.serverless.com
Your Environment Information ---------------------------
Operating System: win32
Node Version: 12.14.1
Framework Version: 2.13.0 (local)
Plugin Version: 4.1.2
SDK Version: 2.3.2
Components Version: 3.4.2这里有人有什么建议吗?我尝试添加别名,尝试使用排除包(就像当前在webpack.config中一样),但都无济于事。
发布于 2021-05-25 12:57:43
关于pg-native是C++的问题的评论忽略了关键点:pg模块在浏览器和节点上都可以工作,但Webpack感到困惑,并试图打包本机模块。
简单的解决方案是在Webpack配置中排除pg-native。这很好用。
一个陷阱是,当我把Webpack从4升级到5的时候,我之前的工作设置坏了。
以下是对我有效的方法:
Webpack 5:
new webpack.IgnorePlugin({ resourceRegExp: /^pg-native$/}),Webpack 4:
new webpack.IgnorePlugin(/^pg-native$/),https://stackoverflow.com/questions/65436190
复制相似问题