无服务器(Serverless) - 部署期间出现“未知对象类型asyncfunction”错误

23
今天早上我的项目的无服务器部署开始失败了。 我没有更改代码,最后一次成功部署是大约一周前。以下是部署日志:
Error --------------------------------------------------
 
  Error: Unknown object type "asyncfunction"
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:218:17)
      at Object._function (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:319:14)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object._function (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:319:14)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at hash (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:128:10)
      at objectHash (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:33:10)
      at Function.exports.sha1 (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:44:10)
      at AwsProvider.request (/usr/local/lib/node_modules/serverless/lib/plugins/aws/provider/awsProvider.js:234:35)
      at AwsDeploy.uploadZipFile (/usr/local/lib/node_modules/serverless/lib/plugins/aws/deploy/lib/uploadArtifacts.js:76:26)
      at BbPromise.map.concurrency (/usr/local/lib/node_modules/serverless/lib/plugins/aws/deploy/lib/uploadArtifacts.js:127:21)
      at tryCatcher (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/util.js:16:23)
      at MappingPromiseArray._promiseFulfilled (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/map.js:68:38)
      at MappingPromiseArray.PromiseArray._iterate (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise_array.js:115:31)
      at MappingPromiseArray.init (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise_array.js:79:10)
      at MappingPromiseArray._asyncInit (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/map.js:37:10)
      at _drainQueueStep (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:97:12)
      at _drainQueue (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:86:9)
      at Async._drainQueues (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:102:5)
      at Immediate.Async.drainQueues [as _onImmediate] (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:15:14)
      at processImmediate (node:internal/timers:463:21)
 

 
  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Issues:        forum.serverless.com
 
  Your Environment Information ---------------------------
     Operating System:          darwin
     Node Version:              15.4.0
     Framework Version:         1.63.0
     Plugin Version:            3.3.0
     SDK Version:               2.3.0
     Components Core Version:   1.1.2
     Components CLI Version:    1.4.0
我尝试查看我的代码中是否有 "asyncfunction",但我没有找到任何出现。问题似乎在底层,但我不够熟悉这个框架来确定它。

我尝试查找我的代码中是否有 "asyncfunction",但是我没有找到任何出现。问题似乎存在于底层,但我对这个框架的专业程度还不足以确定它。


3
将我的无服务器升级到^1.83.3版本,一切正常。当然,如果您习惯通过“major”版本升级无服务器,则可以选择最新版本。 - Paramvir Singh Karwal
5个回答

17

今天早上我遇到了同样的问题,在将node.js和npm升级以在mac本地运行expo和react native后。

我运行了以下命令:

npm install -g serverless

似乎已经更新到最新的无服务器版本。现在我看到更多有关参数命名的警告,但是部署成功了,希望这可以帮助!


1
谢谢!那解决了问题。运行完该命令后,又出现了关于缺少 Axios 的错误提示,但我通过 npm install --save axios 命令进行了修复,然后成功完成了部署。希望能够帮助其他遇到同样问题的人。干杯! - Claus
刚刚尝试了一下,可惜没成功,还有其他的想法吗?我也是在 Mac 上。 - mick1996
1
@mick1996,我能够在Node v15.11.0和serverless v1.0.59上重现这个问题。在Node v12.21.0上一切正常。 为了解决Node 15上的问题,我建议将serverless升级到2.28.3(最新版本)或任何其他带有package.json中升级后的object-hash版本的版本,因为该问题与object-hash版本1.3.1有关。 - Alina Loi
你好,感谢您的关注!我通过删除“Serverless-Offline”解决了问题,因为版本之间存在冲突!但是您的解决方案听起来更加干净。 - mick1996
我曾经犹豫是否从 serverless@1 转换到 serverless@2。但是,这让我不得不迈出这一步 ;) 我非常高兴所有的兼容性都很好,而且废弃警告解释了如何继续前进。 - Matthias Steinbauer

12

在我们运行Jenkins的服务器上,当将node从14.16.0更新到14.17.0时,出现了此问题。

将node版本降级至14.16.0后,错误消息消失。


12

当将Node升级到比您使用的serverless版本更高的版本时,可能会发生这种情况。您可以升级您的serverless版本来解决此问题。

如果您知道在您的版本和最新版本之间没有任何重大变化,您可以安装最新版本的软件包。例如:

npm install --save-dev serverless@latest

您还可以指定与您所在的“major”版本相对应的最新版本的serverless。根据语义化版本控制,只有在更新“major”版本时才会发生重大变更,因此这是一个更安全的选项。

例如,如果您之前安装了一些v1.x.y版本的serverless,则可以通过以下方式安装最新的v1版本:

npm install --save-dev serverless@1

这将使您避免破坏性更改


对我来说,这是因为我在使用节点版本14.x的serverless时,运行了“serverless deploy”命令使用了17.x版本的节点。使用节点14.x版本修复了此问题。 - Vadorequest

1

请检查您的package.json文件。您可能指定了一个较旧的serverless版本。


1
已经有至少两个答案涵盖了此问题,请不要重复回答。 - Chris

1

我之前使用的是 node 版本 v14.17.3,通过 nvm 将其降级到了 v12.13.0,并且现在它可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接