如何在 aws 上发布 nodeJS 应用程序?

Posted

技术标签:

【中文标题】如何在 aws 上发布 nodeJS 应用程序?【英文标题】:How can I publish a nodJS app on aws? 【发布时间】:2018-01-01 20:26:57 【问题描述】:

我正在使用 aws 云的免费层版本,并且在加载 nodeJs 应用程序时遇到了一些问题。我试图遵循 aws 的文档,但不幸的是它没有工作。我从服务中选择 Elastic BeanStalk,然后创建一个新应用程序。我当然选择 nodeJs 作为预配置平台。我用我的应用程序制作了一个 zip,我真的很注意,在 package.json 和 app.js 之上没有任何父文件夹。如上图所示,我有一个“public”文件夹,其中包含其他文件夹(css、img、javascript 代码)。当我尝试上传项目时,我收到一条错误消息。 “未能找到 package.json。Node.js 可能无法启动。验证 package.json 是否有效或将代码放在名为 server.js 或 app.js 的文件中。”在项目视图中,我的健康状态为“降级”,还有一个错误代码:“i-045ac359227e3a9ae”严重 我在这台服务器上尝试了许多 php 项目,一切正常,但我无法使其与 Node.js 一起使用。你能帮帮我吗?

package.json:

 
  "name": "kutyapplikacio",

  "version": "1.0.0",

  "description": "Egy alkalmazás kutyáknak és gazdáiknak",

  "main": "server.js",

  "scripts": 
    "test": "test",

    "start": "node server.js"
  ,

 "author": "sethdevelop",

 "license": "ISC",

 "dependencies": 

"body-parser": "^1.17.2",

"express": "^4.15.3",

"express-mailer": "^0.3.1",

"express-mysql": "0.0.1",

"express-validator": "^3.2.0",

"mysql": "^2.13.0",

"nodemailer": "^4.0.1",

"nodemailer-smtp-transport": "^2.7.4"

【问题讨论】:

package.json 里面是什么?它也可能是您用于压缩文件的方法,当您压缩时,您可能会将您的东西嵌套在它们当前的文件夹中,因此当弹性豆茎解压缩时,除了包含您的东西的文件夹之外,它解压缩的目录中没有任何内容。 我更新了帖子。压缩方法:我把文件标记出来,右键,压缩,添加到压缩文件 将 ZIP 文件的结构与 github.com/awslabs/eb-node-express-sample/releases/download/… 的 AWS 示例进行比较。 我上传了这个示例项目,它可以工作。所以它必须是我的应用程序结构 这就是我在没有beantalk的情况下手动配置EC2实例medium.com/@adhasmana/… 【参考方案1】:

您写的错误消息是:“无法找到 package.json。Node.js 可能无法启动。验证 package.json 是否有效或将代码放在名为 server.js 或 app.js 的文件中。”

从文件夹中我只看到你有 app.js 文件。

并且在你的 package.json 中有 server.js:

"main": "server.js",    
  "scripts": 
    "test": "test",    
    "start": "node server.js"
  

也许您应该将 server.js 更改为 app.js ?


更新

由于您提到它们具有相同的名称: 难道是你压缩文件夹而不是压缩文件? 这里讨论了同样的问题: https://forums.aws.amazon.com/message.jspa?messageID=477087 https://forums.aws.amazon.com/thread.jspa?threadID=130140

【讨论】:

我认为名字可能是问题,所以我重命名了它,忘记了。但是当我上传 zip 时,所有东西都有正确的名称。 您能告诉我们您正在阅读哪份文件吗?喜欢这个:docs.aws.amazon.com/elasticbeanstalk/latest/dg/…? 我完全遵循了这个文档。无论我做什么,当我尝试启动应用程序链接时,都会收到 502 错误网关。 我试着认真地制作 zip 文件。我指定文件,制作 zip 文件,没有任何父文件夹,我确定。

以上是关于如何在 aws 上发布 nodeJS 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NodeJS 上验证 AWS Cognito 访问令牌

如何使用 NodeJS 在 AWS Lambda 上运行 PhantomJS

如何将 React + NodeJS Express 应用程序部署到 AWS?

AWS Beanstalk 在部署 Nodejs 应用程序时如何使用 NPM?

aws opsworks 多个nodejs 应用程序?

如何使用 ReactJS/NodeJS 一起部署到 Amazon Web Services (AWS)?