更新5/18/23 -我将Azure应用程序设置中的此设置从6.9.1更新为18(我正在使用的节点版本),现在我可以再次成功部署。
网站_节点_默认值_版本
问题
我不知道为什么我的部署失败了。我以前在VS Code 1.65到1.66中遇到过这个问题,不得不留在1.65上。有一个VS代码更新到1.78.2从任何以前的版本,我是。
我尝试降级到2023年3月版本的VS Code并重试部署,但仍然失败。(仅供参考-仍然有版本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。不知道我还能做些什么,看看重置一些东西是否可能有帮助!
2条答案
按热度按时间jtw3ybtb1#
Node.js
Loader模块有问题,这意味着所使用的Node.js
版本存在不兼容性或配置问题。使用
node --version
命令检查node.js
版本,并按照以下文档中的详细说明配置您的环境。1.配置环境,
1.将其更新为
Node.js
版本18.x
,Azure函数核心工具4.x和函数运行时版本:4.17.x,1.检查Visual Studio Code latest releases并升级它。
在我的本地环境中,已经安装了
node.js v16.17.0
。一旦我在本地Azure函数中创建了.js
函数,我运行了该函数,它显示了一个警告,如下所示。我也收到了和你一样的错误。然后,我将其更新为
v18.0
***,它开始按预期工作。***Install Node.js v18.12.0
在完成上述更改之后,我运行了示例触发器函数,并发送了一条Hello world消息,并且能够触发它。
您还可以检查应用程序设置中的函数运行时设置
FUNCTION_WORKER_RUNTIME
、FUNCTIONS_ENTENSION_VERSION
和其他设置是否正确设置了所需的版本值。部署到function app后,可以在monitoring部分查看日志流中的日志,如图所示。
您可以按照下面的URL,将其替换为您的功能应用程序名称,以检索所有日志。
请参阅Azure Functions runtime Versions compatibility。
rjee0c152#
正如我所评论的,Azure在部署过程中使用的Node.js版本可能与您在本地使用的版本不同。
Azure使用在
WEBSITE_NODE_DEFAULT_VERSION
应用程序设置中指定的版本、package.json file
的引擎部分中的节点属性或默认版本(如果两者都未提供)。WEBSITE_NODE_DEFAULT_VERSION
应用程序设置,或在package.json
文件的引擎部分中指定节点版本。OPconfirms:
我将Azure应用程序中的
WEBSITE_NODE_DEFAULT_VERSION
设置从6.9.1更新为18(我正在使用的节点版本),现在我可以再次成功部署。package.json
中的engines
字段不是必需的,如果不存在,Azure将使用WEBSITE_NODE_DEFAULT_VERSION
应用程序设置中指定的版本。但是,在
package.json
中指定Node.js版本对于确保您的应用程序始终使用兼容的Node.js版本运行非常有用,无论它部署在什么环境中。package.json
中的engines
字段指定项目兼容的Node.js版本。它通常位于package.json
文件的根级别。如果它不存在,您可以手动添加它。
这将是这样的:
在本例中,
engines
字段指定项目应使用Node.js版本16.x运行。您可以将“16.x”替换为您正在使用的Node.js版本。package-lock.json
文件中的"*"
值意味着您的应用程序应该与任何版本的Node.js一起工作。package-lock.json
文件是自动生成的,不应手动编辑。相反,对Node.js版本的任何更改都应该在package.json
文件中进行,并且package-lock.json
文件将在下次运行npm install
时自动更新。