Node.js npm start无法在AWS Windows实例上使用AWS代码部署运行

Node.js npm start无法在AWS Windows实例上使用AWS代码部署运行,node.js,windows,npm,aws-code-deploy,aws-codepipeline,Node.js,Windows,Npm,Aws Code Deploy,Aws Codepipeline,​我正在尝试在windows EC2实例上部署Node.js应用程序。部署成功完成,但节点服务器不会在这些实例上自动启动。我必须登录到每个实例才能运行命令node app.js来启动节点服务器。我试图在appspec.yml文件中包含此命令,但随后出现以下错误 LifecycleEvent - ApplicationStart Script - node_start.bat [stdout] [stdout]C:\Windows\system32>cd C:/host/ [stdout]

​我正在尝试在windows EC2实例上部署Node.js应用程序。部署成功完成,但节点服务器不会在这些实例上自动启动。我必须登录到每个实例才能运行命令node app.js来启动节点服务器。我试图在appspec.yml文件中包含此命令,但随后出现以下错误

LifecycleEvent - ApplicationStart
Script - node_start.bat
[stdout]
[stdout]C:\Windows\system32>cd C:/host/ 
[stdout]
[stdout]C:\host>npm start 
[stderr]'npm' is not recognized as an internal or external command,
[stderr]operable program or batch file.

我的appspec.yml文件如下所示

version: 0.0
os: windows
files:
  - source: app.js
    destination: c:\host
  - source: package.json
    destination: c:\host
  - source: \node_modules
    destination: c:\host\node_modules
  - source: node_start.bat
    destination: c:\host
  - source: before_install.bat
    destination: c:\host
hooks:
    AfterInstall:
    - location: before_install.bat
      timeout: 300
    ApplicationStart:
    - location: node_start.bat
      timeout: 300
节点已安装在这两个实例上,并且路径变量也已正确设置。手动登录到这些服务器并运行命令npmstart可以很好地工作。它只有在AWS代码部署时才会失败。 我想介绍AWS Lambda函数,也在这一步之后做健康检查


如能为解决此问题提供任何帮助,我们将不胜感激

这个问题实际上与CodeDeploy无关。CodeDeploy只运行您给它的脚本;在您的情况下,使用node_start.bat。也许,答案是你真正遇到的问题。CodeDeploy不知道您的应用程序,除非您告诉它

您可能需要编辑node_start.bat或您的环境,以便npm是有效的命令

以下是一些有助于您的案例的建议:

测试appspec和脚本

您可以使用代理附带的测试appspec.yml和相关脚本

验证您的服务是否正在运行

显然,如果您的部署成功,这并不可怕,但您的应用程序并没有实际运行。但是,您可以使用来确认您的应用程序是否正在实际运行或进行任何其他验证。您可以包含一个脚本,该脚本可以查看进程是否正在运行、确认没有记录错误、运行测试或其他您可能需要的内容