Node.js Nodejs/express api在elastic beanstalk上的502坏网关处失败

Node.js Nodejs/express api在elastic beanstalk上的502坏网关处失败,node.js,amazon-web-services,express,amazon-elastic-beanstalk,Node.js,Amazon Web Services,Express,Amazon Elastic Beanstalk,我尝试在Elastic Beanstalk上启动nodejs/express api 当我在本地运行api时,它工作得非常好 当我转到elastic beanstalk提供的URL时,我到达了一个502坏网关 这是我收到的错误日志: Error: Cannot find module '/var/app/current/main.js' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)

我尝试在Elastic Beanstalk上启动nodejs/express api

当我在本地运行api时,它工作得非常好

当我转到elastic beanstalk提供的URL时,我到达了一个502坏网关

这是我收到的错误日志:

Error: Cannot find module '/var/app/current/main.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! backend@1.0.0 start: `node main.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the backend@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

> backend@1.0.0 start /var/app/current
> node main.js

internal/modules/cjs/loader.js:638
    throw err;
这是我的main.js:


const express = require('express')
const app = express()
const bodyParser = require('body-parser')
const cors = require('cors')
const mongoose = require('mongoose')
const passport = require("passport")
// const teamRoutes = express.Router()
const PORT = 4000

//app imports
const { teamRouter } = require('./routers')
const { playerRouter } = require('./routers')
const { reportRouter } = require('./routers')
const { likeRouter } = require('./routers')
const { leagueRouter } = require('./routers')
const { filterRouter } = require('./routers')
const { commentRouter } = require('./routers')
const { adminUserRouter } = require('./routers')
const { tokenRouter } = require('./routers')

let Team = require('./models/Team')

app.use(cors())
app.use(bodyParser.json())

mongoose.connect('mymongodb', { useNewUrlParser: true})
const connection = mongoose.connection

connection.once('open', function(){
    console.log('MongoDB database connection established!')
})

// Passport middleware
app.use(passport.initialize());
// Passport config
require("./config/passport")(passport);


app.use('/teams', teamRouter)
app.use('/players', playerRouter)
app.use('/reports', reportRouter)
app.use('/likes', likeRouter)
app.use('/leagues', leagueRouter)
app.use('/filters', filterRouter)
app.use('/comments', commentRouter)
app.use('/api/users', adminUserRouter)
app.use('/tokens', tokenRouter)


app.listen(PORT, function() {
    console.log('Server is running on Port: ' + PORT)
})
这是my package.json:

{
  "name": "backend",
  "version": "1.0.0",
  "description": "",
  "scripts": {
    "start": "node main.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "axios": "^0.19.0",
    "bcryptjs": "^2.4.3",
    "body-parser": "^1.19.0",
    "concurrently": "^4.1.1",
    "cors": "^2.8.5",
    "expo-server-sdk": "^3.3.0",
    "express": "^4.17.1",
    "grunt": "^1.0.4",
    "is-empty": "^1.2.0",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^5.6.4",
    "mongoose-deep-populate": "^3.1.1",
    "nodemailer": "^6.3.0",
    "passport": "^0.4.0",
    "passport-jwt": "^4.0.0",
    "validator": "^11.1.0"
  }
}
我的main.js以前被称为server.js,但我根据这篇文章的建议对其进行了更改:

编辑: 这是我的文件路径:

编辑: 这是我的.elasticbeanstalk config.yml文件:

branch-defaults:
  default:
    environment: news-arg-backend
    group_suffix: null
global:
  application_name: news-arg-backend
  branch: null
  default_ec2_keyname: null
  default_platform: Node.js
  default_region: us-west-2
  include_git_submodules: true
  instance_profile: null
  platform_name: null
  platform_version: null
  profile: eb-cli
  repository: null
  sc: null
  workspace_type: Application
在我的.ebextensions中,我有一个nodecommand.config和一个settings.config

这是我的nodecommad.config:

option_settings:
  - namespace: aws:elasticbeanstalk:container:nodejs
    option_name: NodeCommand
    value: "npm start"
这是我的settings.config:

option_settings:
  aws:elasticbeanstalk:container:nodejs:staticfiles:
    option_name: /static/
    value: /public/

main.js在根目录上吗?app.js在哪里?可能是@adii我编辑了帖子以显示我的文件路径。没有app.js;这只是一个api。这可能会绊倒它吗?@schoenbl你有什么配置。ebextansion和。elasticbeanstalk@SandeepPatel我刚刚更新了它,加入了我的.ebextansion和.elasticbeanstalk