webpack - 使用 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 中删除plugins
andcustom
它可以工作,但我假设没有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
解决方案
显然这将适用于旧版本的依赖项:
"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"
}
推荐阅读
- android - Android X 项目可以使用正在使用支持库依赖项的库模块吗?
- google-sheets - 如何计算 Google 表格中特定单元格中的字数?
- angular - Angular 新手,无法从组件外部访问变量
- php - 将php、mysql和VB.net打包在一起
- python - python中的直方图函数
- angular - 我没有在 mergeMap 中使用 httpClient.get Observable 获取任何数据
- r - 合并两个具有非唯一标识符的数据帧
- ruby-on-rails - 充当可标记的对象 - 枚举方法在标记表中不起作用
- python - 在什么情况下 Tkinter 的 grid() 不能与 pack() 混合使用?
- c - 为什么当我使用 64 位局部变量时堆栈指针不减少?