首页 > 解决方案 > 使用 aws-lambda 构建无服务器 apollo-server 失败

问题描述

我正在按照这个说明使用 aws-lambda 设置一个 apollo-server,最后我得到了以下错误,而不是让事情正常工作:

sls deploy --verbose                                                                                                                                       
(18874d19h37m) ruby-2.6.3  21:37:27
Serverless: Running "serverless" installed locally (in service node_modules)
Serverless: To ensure safe major version upgrades ensure "frameworkVersion" setting in service configuration (recommended setup: "frameworkVersion: ^2.57.0")

Serverless: Load command interactiveCli
Serverless: Load command config
Serverless: Load command config:credentials
Serverless: Load command config:tabcompletion
Serverless: Load command config:tabcompletion:install
Serverless: Load command config:tabcompletion:uninstall
Serverless: Load command create
Serverless: Load command install
Serverless: Load command package
Serverless: Load command deploy
Serverless: Load command deploy:function
Serverless: Load command deploy:list
Serverless: Load command deploy:list:functions
Serverless: Load command invoke
Serverless: Load command invoke:local
Serverless: Load command info
Serverless: Load command logs
Serverless: Load command metrics
Serverless: Load command print
Serverless: Load command remove
Serverless: Load command rollback
Serverless: Load command rollback:function
Serverless: Load command slstats
Serverless: Load command plugin
Serverless: Load command plugin
Serverless: Load command plugin:install
Serverless: Load command plugin
Serverless: Load command plugin:uninstall
Serverless: Load command plugin
Serverless: Load command plugin:list
Serverless: Load command plugin
Serverless: Load command plugin:search
Serverless: Load command config
Serverless: Load command config:credentials
Serverless: Load command upgrade
Serverless: Load command uninstall
Serverless: DOTENV: Loading environment variables from .env.development:
Serverless:      - SECRET_MESSAGE
Serverless: Load command webpack
Serverless: Load command offline
Serverless: Load command offline:start
Serverless: Load command login
Serverless: Load command logout
Serverless: Load command generate-event
Serverless: Load command test
Serverless: Load command dashboard
Serverless: Load command output
Serverless: Load command output:get
Serverless: Load command output:list
Serverless: Load command param
Serverless: Load command param:get
Serverless: Load command param:list
Serverless: Load command studio
Serverless: Skipping variables resolution with old resolver (new resolver reported no more variables to resolve)
Serverless: Deprecation warning: Resolution of lambda version hashes was improved with better algorithm, which will be used in next major release.
        Switch to it now by setting "provider.lambdaHashingVersion" to "20201221"
        More Info: https://www.serverless.com/framework/docs/deprecations/#LAMBDA_HASHING_VERSION_V2
Serverless: Invoke deploy
Serverless: Invoke package
Serverless: Invoke aws:common:validate
Serverless: Invoke aws:common:cleanupTempDir
Serverless: Invoke webpack:validate
Serverless: Using configuration:
{
"includeModules": true,
"webpackConfig": "webpack.config.js",
"packager": "npm",
"packagerOptions": {},
"keepOutputDirectory": false,
"concurrency": 8
}
Serverless: Removing ...-lambada/.webpack
Serverless: Invoke webpack:compile
Serverless: Bundling with Webpack...
asset src/apollo-server.js 5.11 KiB [emitted] (name: src/apollo-server)
./src/apollo-server.ts 449 bytes [built] [code generated]
external "apollo-server-lambda" 42 bytes [built] [code generated]
./src/resolvers.ts 187 bytes [built] [code generated]
./src/type-defs.ts 261 bytes [built] [code generated]
webpack compiled successfully in 2334 ms

 Type Error ----------------------------------------------

  TypeError: Cannot read property '1' of null
  ....

有什么不喜欢的想法吗?(注意:如果我从 serverless.yml 中删除pluginsandcustom它可以工作,但我假设没有serverless-webpack插件)其他信息:

Your Environment Information ---------------------------
     Operating System:          darwin
     Node Version:              16.6.1
     Framework Version:         2.57.0 (local)
     Plugin Version:            5.4.4
     SDK Version:               4.3.0
     Components Version:        3.17.0

标签: webpackaws-lambdaserverlessapollo-server

解决方案


显然这将适用于旧版本的依赖项:

"dependencies": {
"apollo-server-lambda": "^2.16.1",
"graphql": "^15.3.0"
},
"devDependencies": {
"serverless-dotenv-plugin": "^3.0.0",
"serverless-offline": "^6.5.0",
"serverless-webpack": "^5.3.3",
"ts-loader": "^8.0.2",
"typescript": "^3.9.7",
"webpack": "^4.44.1",
"webpack-node-externals": "^2.5.0"
}

与我以前的相比:

"dependencies": {
"apollo-server-lambda": "^3.3.0",
"graphql": "^15.5.2"
 },
"devDependencies": {
"serverless-dotenv-plugin": "^3.9.0",
"serverless-offline": "^8.0.0",
"serverless-webpack": "^5.5.3",
"ts-loader": "^9.2.5",
"typescript": "^4.4.2",
"webpack": "^5.52.0",
"webpack-node-externals": "^3.0.0"
}

推荐阅读