【问题标题】:Error running Serverless Framework command after upgrading to v3升级到 v3 后运行无服务器框架命令时出错
【发布时间】:2022-02-02 06:30:01
【问题描述】:

我最近将我的无服务器框架项目从 v2.7 升级到了 v3.0.1。这样做之后,每当我运行 serverless deploy 时,我都会收到以下错误:

Environment: win32, node 14.18.1, framework 3.0.1, plugin 6.0.0, SDK 4.3.0
Docs:        docs.serverless.com
Support:     forum.serverless.com
Bugs:        github.com/serverless/serverless/issues

Error:
TypeError: validate is not a function
    at ConfigSchemaHandler.validateConfig (C:\Users\MainPC\AppData\Roaming\nvm\v14.18.1\node_modules\serverless\lib\classes\config-schema-handler\index.js:101:5)
    at async Service.validate (C:\Users\MainPC\AppData\Roaming\nvm\v14.18.1\node_modules\serverless\lib\classes\service.js:267:5)
    at async Serverless.run (C:\Users\MainPC\AppData\Roaming\nvm\v14.18.1\node_modules\serverless\lib\serverless.js:162:28)
    at async C:\Users\MainPC\AppData\Roaming\nvm\v14.18.1\node_modules\serverless\scripts\serverless.js:675:9

我尝试了以下方法:

  • 通过运行 serverless 并选择 NodeJS 启动项目来创建一个新的“hello world”项目
  • 完全卸载nvm并重新安装NodeJS v14.18.1
  • 删除了所有全局安装的 NPM 模块并从头开始重新安装 SLS

我现在正在运行不带 NVM 的独立 v14 节点(在 Windows 10 上),但错误仍然存​​在。恢复到 v2.7 可以解决该错误。

似乎没有其他人遇到这个问题。谁能提供一些帮助?


对于那些要求模板的人,错误甚至发生在 Serverless 自己为新项目生成的演示模板上:

service: testing-v3

frameworkVersion: '3'

provider:
  name: aws
  runtime: nodejs14.x

functions:
  hello:
    handler: handler.hello

我很确定问题是安装问题或 v3 特有的问题,或两者兼而有之。

【问题讨论】:

  • 您能否分享您的 serverless.yml,因为这会直接影响您看到的错误?
  • @GarethMcCumskey 我今晚会发帖,但即使在基本的 NodeJS 入门项目中也会发生这种情况,您可以通过在空目录中运行 serverless 来创建它。

标签: node.js npm aws-lambda serverless serverless-framework


【解决方案1】:

您必须遵循一些规则才能将您的版本升级到 v3,Serverless Framework v3 包含可能影响项目的重大更改。 在我看来,很多项目都会受到影响。 一些问题是:

  • frameworkVersion: '3'

CLI 命令

将不再适用于 v3:

serverless --verbose deploy 

正确的语法:

serverless deploy --verbose

服务配置

在 v2 中已弃用,在 v3 中已删除:

service:
    name: my-service

正确的语法:

service: my-service

我真的建议你检查一下 https://www.serverless.com/framework/docs/guides/upgrading-v3 有完整的指南来支持您可能遇到的问题。

【讨论】:

  • 谢谢威尔,我实际上已经相当广泛地阅读了该文档。正如我向另一位评论者解释的那样,即使我使用 Serverless 本身在空目录中运行 serverless 时生成的基本 NodeJS 启动项目,问题仍然存在,因此我假设 SLS 的 v3 不会生成它不能生成的模板跑。我确信问题出在我安装 SLS 而不是模板中的任何内容上,但鉴于我已经从我的机器上完全清除了 NodeJS / npm 并重新安装,我看不出我还能做什么。
猜你喜欢
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-20
  • 1970-01-01
  • 2015-01-27
  • 2019-05-14
  • 1970-01-01
相关资源
最近更新 更多