我不确定为什么我的部署失败了。我之前在 VS Code 1.65 到 1.66 中遇到过这个问题,不得不留在 1.65 上。 VS Code 从我之前使用的任何版本更新到 1.78.2,还有 Azure 功能扩展更新。
我尝试降级到 2023 年 3 月版本的 VS Code 并重试部署,但仍然遇到同样的失败。 (仅供参考 - 当我尝试使用 3 月版本执行部署时,版本 1.78.2 仍然打开并运行)所以不知道这是否有所不同?
这是我在输出中看到的。我不确定这是什么意思?我该如何调试呢?我在 Azure 中打开了应用程序日志记录,但在我尝试部署时在日志流中看不到任何内容。我还打开了 Kudu (*.scm.azurewebsites.net) 并查看了文件,但没有看到任何有用的信息。也许我对 Kudu 不够熟悉,无法理解如何使用它来调试失败的部署。
6:42:56 PM yoga-dev-1: Starting deployment...
6:42:59 PM yoga-dev-1: Creating zip package...
6:43:10 PM yoga-dev-1: Zip package size: 29 MB
6:43:10 PM yoga-dev-1: Fetching changes.
6:43:11 PM yoga-dev-1: Cleaning up temp folders from previous zip deployments and extracting pushed zip file C:\local\Temp\zipdeploy\qkztvba1.zip (27.71 MB) to C:\local\Temp\zipdeploy\extracted
6:43:17 PM yoga-dev-1: Updating submodules.
6:43:17 PM yoga-dev-1: Preparing deployment for commit id '7e83110e5b'.
6:43:17 PM yoga-dev-1: Generating deployment script.
6:43:17 PM yoga-dev-1: Using the following command to generate deployment script: 'azure site deploymentscript -y --no-dot-deployment -r "C:\local\Temp\zipdeploy\extracted" -o "C:\home\site\deployments\tools" --basic --sitePath "C:\local\Temp\zipdeploy\extracted"'.
6:43:18 PM yoga-dev-1: C:\PROGRA~2\SITEEX~1\NODEAP~1\296456~1.8
6:43:18 PM yoga-dev-1: odejs\build\src\Loader.js:153
6:43:18 PM yoga-dev-1: ...StatusLogger.DEFAULT_STATUS,
6:43:18 PM yoga-dev-1: ^^^
6:43:18 PM yoga-dev-1: SyntaxError: Unexpected token ...
6:43:18 PM yoga-dev-1: at createScript (vm.js:56:10)
6:43:18 PM yoga-dev-1: at Object.runInThisContext (vm.js:97:10)
6:43:18 PM yoga-dev-1: at Module._compile (module.js:542:28)
6:43:18 PM yoga-dev-1: at Object.Module._extensions..js (module.js:579:10)
6:43:18 PM yoga-dev-1: at Module.load (module.js:487:32)
6:43:18 PM yoga-dev-1: at tryModuleLoad (module.js:446:12)
6:43:18 PM yoga-dev-1: at Function.Module._load (module.js:438:3)
6:43:18 PM yoga-dev-1: at Module.require (module.js:497:17)
6:43:18 PM yoga-dev-1: at module.js:669:12
6:43:18 PM yoga-dev-1: at Array.forEach (native)
6:43:18 PM yoga-dev-1: C:\PROGRA~2\SITEEX~1\NODEAP~1\296456~1.8
6:43:18 PM yoga-dev-1: odejs\build\src\Loader.js:153\r
6:43:18 PM yoga-dev-1: ...StatusLogger.DEFAULT_STATUS,\r
6:43:18 PM yoga-dev-1: ^^^\r
6:43:18 PM yoga-dev-1: \r
6:43:18 PM yoga-dev-1: SyntaxError: Unexpected token ...\r
6:43:18 PM yoga-dev-1: at createScript (vm.js:56:10)\r
6:43:18 PM yoga-dev-1: at Object.runInThisContext (vm.js:97:10)\r
6:43:18 PM yoga-dev-1: at Module._compile (module.js:542:28)\r
6:43:18 PM yoga-dev-1: at Object.Module._extensions..js (module.js:579:10)\r
6:43:18 PM yoga-dev-1: at Module.load (module.js:487:32)\r
6:43:18 PM yoga-dev-1: at tryModuleLoad (module.js:446:12)\r
6:43:18 PM yoga-dev-1: at Function.Module._load (module.js:438:3)\r
6:43:18 PM yoga-dev-1: at Module.require (module.js:497:17)\r
6:43:18 PM yoga-dev-1: at module.js:669:12\r
6:43:18 PM yoga-dev-1: at Array.forEach (native)\r
6:43:18 PM yoga-dev-1: C:\Program Files (x86)\SiteExtensions\Kudu\100.50331.6204\bin\Scripts\starter.cmd "C:\Program Files (x86)\SiteExtensions\Kudu\100.50331.6204\bin
6:43:18 PM yogabandy-dev-1: ode_modules\.bin\kuduscript.cmd" -y --no-dot-deployment -r "C:\local\Temp\zipdeploy\extracted" -o "C:\home\site\deployments\tools" --basic --sitePath "C:\local\Temp\zipdeploy\extracted"
6:43:19 PM yoga-dev-1: Deployment Failed.
6:43:29 PM yoga-dev-1: Deployment failed.
更新 - 查看我的笔记,在 2022 年 4 月 8 日,我遇到了 VS Code 1.66.1 的问题,我在 web 应用程序部署失败时遇到了同样的问题。所以我降级到 VS Code 1.65.2 并且它再次工作。
问题 - 我可以调查一下 VS Code、Azure 和我正在部署的 Web 应用程序之间是否存在兼容性问题吗?我检查了 Web 应用程序服务,它和我的应用程序一样使用 .Net 6。我重新启动了我的 Mac,重新启动了 VS Code。不知道我还能做些什么来看看重置某些东西是否有帮助!
Node.js
Loader 模块有问题,暗示使用的Node.js
版本存在不兼容或配置问题。
使用
node.js
命令检查 node --version
版本,并按照以下文档中的详细信息配置您的环境。
Node.js
版本18.x
,Azure函数核心工具4.x和函数运行时版本:4.17.x,在我的本地环境中已经安装了
node.js v16.17.0
。在本地 Azure 函数中创建 .js
函数后,我运行该函数,它显示如下警告。这样,我也收到了与您相同的错误。
然后,我将其更新为
v18.0
,它开始按预期工作。
注意: 在升级到任何最新版本/发行版之前,请确保您正在卸载以前的版本并安装特定的发行版。
经过上述更改后,我运行带有 Hello world 消息的示例触发器功能并能够触发它。
更新兼容版本后部署成功:
您还可以检查功能运行时设置
FUNCTION_WORKER_RUNTIME
、FUNCTIONS_ENTENSION_VERSION
和应用程序设置中的其他设置是否正确设置了所需的版本值。
部署到函数应用程序后,您可以在监控部分查看日志流中的日志,如图所示。
否则,
您可以按照以下 URL 将其替换为您的功能 App 名称以检索所有日志。