【Azure Bot Service】部署NodeJS ChatBot代码到App Service中无法自动启动

本文涉及的产品
函数计算FC,每月15万CU 3个月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 2024-11-12T12:22:40.366223350Z Error: Cannot find module 'dotenv' 2024-11-12T12:40:12.538120729Z Error: Cannot find module 'restify'2024-11-12T12:48:13.348529900Z Error: Cannot find module 'lodash'

问题描述

把NodeJS的ChatBot代码部署到App Service环境中,通过VS Code直接部署,显示部署成功。但是通过URL访问时候,却是 :( Application Error 。

问题解答

App Service遇见Application Error,第一步,查看日志。

发现启动时候遇见:

2024-11-12T12:22:40.366223350Z Error: Cannot find module 'dotenv'

2024-11-12T12:40:12.538120729Z Error: Cannot find module 'restify'

2024-11-12T12:48:13.348529900Z Error: Cannot find module 'lodash'

因在部署NodeJS项目时,VS Code打包时候,排除了 项目中 node_modules文件夹中的全部内容。导致项目启动时候找不到module!

8:21:29 PM lbbotbackendapp01: Starting deployment...

8:21:29 PM lbbotbackendapp01: Creating zip package...

8:21:30 PM lbbotbackendapp01: Ignoring files from "appService.zipIgnorePattern"

"node_modules{,/**}"

".vscode{,/**}"

8:21:31 PM lbbotbackendapp01: Adding 13 files to zip package...

而部署包上传成功后,App Service并没有主动执行npm install安装系统中所需要使用的node modules。

 

解决办法有多种:

方式一:修改zipIgnorePattern内容,让Zip部署包中包含本地可以运行的程序的全部文件。重新部署!

 

方式二:直接进入App Service的高级工具Kudu站点(https://<yourappservicename>.scm.chinacloudsites.cn/newui/kududebug), 进入wwwroot目录,执行 npm install

但是,这种方式有时会遇见权限不足,无法安装modules问题, 所以,还是更推荐第一种方式,从本地上传完整的node modules文件!

npm ERR! Error: EACCES: permission denied, rename '/home/site/wwwroot/node_modules/eslint-plugin-import' -> '/home/site/wwwroot/node_modules/.eslint-plugin-import-QTkaoisN'

此外,如果完整的NodeJS项目文件部署到App Service后,项目无法启动的原因也可能为:

从 Node 14 LTS 开始,容器不会自动使用 PM2 启动应用。 若要使用 PM2 启动应用,请将启动命令设置为 pm2 start <.js-file-or-PM2-file> --no-daemon。

请务必使用 --no-daemon 参数,因为 PM2 需要在前台运行才能使容器正常工作。

 

参考资料

为 Azure 应用服务配置 Node.js 应用 : https://docs.azure.cn/zh-cn/app-service/configure-language-nodejs?pivots=platform-linux#configure-nodejs-server

 

【END】



 

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关文章
|
3天前
|
监控 关系型数据库 MySQL
|
18天前
|
Windows
【Azure App Service】对App Service中CPU指标数据中系统占用部分(System CPU)的解释
在Azure App Service中,CPU占比可在App Service Plan级别查看整个实例的资源使用情况。具体应用中仅能查看CPU时间,需通过公式【CPU Time / (CPU核数 * 60)】估算占比。CPU百分比适用于可横向扩展的计划(Basic、Standard、Premium),而CPU时间适用于Free或Shared计划。然而,CPU Percentage包含所有应用及系统占用的CPU,高CPU指标可能由系统而非应用请求引起。详细分析每个进程的CPU占用需抓取Windows Performance Trace数据。
78 40
|
1月前
|
网络协议 容器
【Container App】部署Contianer App 遇见 Failed to deploy new revision: The Ingress's TargetPort or ExposedPort must be specified for TCP apps.
Failed to deploy new revision: The Ingress's TargetPort or ExposedPort must be specified for TCP apps.
63 27
|
1月前
|
API
【Azure Logic App】使用Logic App来定制Monitor Alert邮件内容遇见无法获取SearchResults的情况
Log search alert rules from API version 2020-05-01 use this payload type, which only supports common schema. Search results aren't embedded in the log search alerts payload when you use this version.
48 10
|
2月前
|
C# Windows
【Azure App Service】在App Service for Windows上验证能占用的内存最大值
根据以上测验,当使用App Service内存没有达到预期的值,且应用异常日志出现OutOfMemory时,就需要检查Platform的设置是否位64bit。
58 11
|
2月前
|
缓存 容器 Perl
【Azure Container App】Container Apps 设置延迟删除 (terminationGracePeriodSeconds) 的解释
terminationGracePeriodSeconds : 这个参数的定义是从pod收到terminated signal到最终shutdown的最大时间,这段时间是给pod中的application 缓冲时间用来处理链接关闭,应用清理缓存的;并不是从idel 到 pod被shutdown之间的时间;且是最大时间,意味着如果application 已经gracefully shutdown,POD可能被提前terminated.
|
2月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
2月前
|
Java 开发工具 Windows
【Azure App Service】在App Service中调用Stroage SDK上传文件时遇见 System.OutOfMemoryException
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
|
2月前
|
安全 Apache 开发工具
【Azure App Service】在App Service上关于OpenSSH的CVE2024-6387漏洞解答
CVE2024-6387 是远程访问漏洞,攻击者通过不安全的OpenSSh版本可以进行远程代码执行。CVE-2024-6387漏洞攻击仅应用于OpenSSH服务器,而App Service Runtime中并未使用OpenSSH,不会被远程方式攻击,所以OpenSSH并不会对应用造成安全风险。同时,如果App Service的系统为Windows,不会受远程漏洞影响!