node.jsアプリケーションをAzureにアップロードするのに苦労しています

Aug 22 2020

私はnode.jsの初心者であり、テストのために紺碧のサーバーで個人的に作成していないアプリケーションをホストする必要があります。このサイトは、ローカルでホストされているだけでなく、ngrokを使用してホストされていても問題なく動作します。それでも、Azureでホストすると、次のエラーが発生します。

[1] 2020-08-23T00:26:36 
Container etuition_0_41152ef3 didn't respond to HTTP pings on port: 8080, failing site start
[2] 2020-08-23T00:26:36 
Container etuition_0_41152ef3 for site etuition did not start within expected time limit.

ここで、node.jsに完全に慣れていないことを強調する必要がありますが、私にはhttpリクエストが正しく並んでいるように見えます。これが私のindex.jsのコードで、問題があると思います。

'use strict';

/**
 * Load Twilio configuration from .env config file - the following environment
 * variables should be set:
 * process.env.TWILIO_ACCOUNT_SID
 * process.env.TWILIO_API_KEY
 * process.env.TWILIO_API_SECRET
 */
require('dotenv').load();

const express = require('express');
const http = require('https');
const path = require('path');
const { jwt: { AccessToken } } = require('twilio');

const VideoGrant = AccessToken.VideoGrant;

// Max. period that a Participant is allowed to be in a Room (currently 14400 seconds or 4 hours)
const MAX_ALLOWED_SESSION_DURATION = 14400;

// Create Express webapp.
const app = express();

// Set up the paths for the examples.
[
  'bandwidthconstraints',
  'codecpreferences',
  'dominantspeaker',
  'localvideofilter',
  'localvideosnapshot',
  'mediadevices',
  'networkquality',
  'reconnection',
  'screenshare',
  'localmediacontrols',
  'remotereconnection',
  'datatracks',

].forEach(example => {
  const examplePath = path.join(__dirname, `../examples/${example}/public`); app.use(`/${example}`, express.static(examplePath));
});

// Set up the path for the quickstart.
const quickstartPath = path.join(__dirname, '../quickstart/public');
app.use('/quickstart', express.static(quickstartPath));

// Set up the path for the examples page.
const examplesPath = path.join(__dirname, '../examples');
app.use('/examples', express.static(examplesPath));

/**
 * Default to the Quick Start application.
 */
app.get('/', (request, response) => {
  response.redirect('/quickstart');
});



/**
 * Generate an Access Token for a chat application user - it generates a random
 * username for the client requesting a token, and takes a device ID as a query
 * parameter.
 */
app.get('/token', function(request, response) {
  const { identity } = request.query;

  // Create an access token which we will sign and return to the client,
  // containing the grant we just created.
  const token = new AccessToken(
    process.env.TWILIO_ACCOUNT_SID,
    process.env.TWILIO_API_KEY,
    process.env.TWILIO_API_SECRET,
    { ttl: MAX_ALLOWED_SESSION_DURATION }
  );

  // Assign the generated identity to the token.
  token.identity = identity;

  // Grant the access token Twilio Video capabilities.
  const grant = new VideoGrant();
  token.addGrant(grant);

  // Serialize the token to a JWT string.
  response.send(token.toJwt());
});

// Create http server and run it.
const server = http.createServer(app);
const port = process.env.PORT || 8080;
server.listen(port, function() {
  console.log('Express server running on *:' + port);
});

これが私のpackage.jsonです


{
  "name": "video-quickstart-js",
  "version": "1.0.0-dev",
  "description": "Twilio Video SDK Quick Start for JavaScript",
  "main": "index.js",
  "scripts": {
    "build": "npm-run-all build:* ",
    "build:examples": "npm-run-all build:examples:*",
    "build:examples:bandwidthconstraints": "copyfiles -f examples/bandwidthconstraints/src/helpers.js examples/bandwidthconstraints/public && browserify examples/bandwidthconstraints/src/index.js > examples/bandwidthconstraints/public/index.js",
    "build:examples:codecpreferences": "copyfiles -f examples/codecpreferences/src/helpers.js examples/codecpreferences/public && browserify examples/codecpreferences/src/index.js > examples/codecpreferences/public/index.js",
    "build:examples:dominantspeaker": "copyfiles -f examples/dominantspeaker/src/helpers.js examples/dominantspeaker/public && browserify examples/dominantspeaker/src/index.js > examples/dominantspeaker/public/index.js",
    "build:examples:localvideofilter": "copyfiles -f examples/localvideofilter/src/helpers.js examples/localvideofilter/public && browserify examples/localvideofilter/src/index.js > examples/localvideofilter/public/index.js",
    "build:examples:localvideosnapshot": "copyfiles -f examples/localvideosnapshot/src/helpers.js examples/localvideosnapshot/public && browserify examples/localvideosnapshot/src/index.js > examples/localvideosnapshot/public/index.js",
    "build:examples:mediadevices": "copyfiles -f examples/mediadevices/src/helpers.js examples/mediadevices/public && browserify examples/mediadevices/src/index.js > examples/mediadevices/public/index.js",
    "build:examples:networkquality": "copyfiles -f examples/networkquality/src/helpers.js examples/networkquality/public && browserify examples/networkquality/src/index.js > examples/networkquality/public/index.js",
    "build:examples:reconnection": "copyfiles -f examples/reconnection/src/helpers.js examples/reconnection/public && browserify examples/reconnection/src/index.js > examples/reconnection/public/index.js",
    "build:examples:screenshare": "copyfiles -f examples/screenshare/src/helpers.js examples/screenshare/public && browserify examples/screenshare/src/index.js > examples/screenshare/public/index.js",
    "build:examples:localmediacontrols": "copyfiles -f examples/localmediacontrols/src/helpers.js examples/localmediacontrols/public && browserify examples/localmediacontrols/src/index.js > examples/localmediacontrols/public/index.js",
    "build:examples:remotereconnection": "copyfiles -f examples/remotereconnection/src/helpers.js examples/remotereconnection/public && browserify examples/remotereconnection/src/index.js > examples/remotereconnection/public/index.js",
    "build:examples:datatracks": "copyfiles -f examples/datatracks/src/helpers.js examples/datatracks/public && browserify examples/datatracks/src/index.js > examples/datatracks/public/index.js",
    "build:quickstart": "browserify quickstart/src/index.js > quickstart/public/index.js",
    "clean": "npm-run-all clean:*",
    "clean:examples": "npm-run-all clean:examples:*",
    "clean:examples:bandwidthconstraints": "rimraf examples/bandwidthconstraints/public/index.js examples/bandwidthconstraints/public/helpers.js",
    "clean:examples:codecpreferences": "rimraf examples/codecpreferences/public/index.js examples/codecpreferences/public/helpers.js",
    "clean:examples:dominantspeaker": "rimraf examples/dominantspeaker/public/index.js examples/dominantspeaker/public/helpers.js",
    "clean:examples:localvideofilter": "rimraf examples/localvideofilter/public/index.js examples/localvideofilter/public/helpers.js",
    "clean:examples:localvideosnapshot": "rimraf examples/localvideosnapshot/public/index.js examples/localvideosnapshot/public/helpers.js",
    "clean:examples:mediadevices": "rimraf examples/mediadevices/public/index.js examples/mediadevices/public/helpers.js",
    "clean:examples:networkquality": "rimraf examples/networkquality/public/index.js examples/networkquality/public/helpers.js",
    "clean:examples:reconnection": "rimraf examples/reconnection/public/index.js examples/reconnection/public/helpers.js",
    "clean:examples:screenshare": "rimraf examples/screenshare/public/index.js examples/screenshare/public/helpers.js",
    "clean:examples:localmediacontrols": "rimraf examples/localmediacontrols/public/index.js examples/localmediacontrols/public/helpers.js",
    "clean:examples:remotereconnection": "rimraf examples/remotereconnection/public/index.js examples/remotereconnection/public/helpers.js",
    "clean:examples:datatracks": "rimraf examples/datatracks/public/index.js examples/datatracks/public/helpers.js",
    "clean:quickstart": "rimraf quickstart/public/index.js",
    "start": "npm run clean && npm run build && node server"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/twilio/video-quickstart-js.git"
  },
  "keywords": [
    "twilio",
    "video",
    "chat",
    "ip",
    "real",
    "time",
    "diggity"
  ],
  "author": "Twilio",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/twilio/video-quickstart-js/issues"
  },
  "homepage": "https://github.com/twilio/video-quickstart-js#readme",
  "dependencies": {
    "dotenv": "^4.0.0",
    "express": "^4.15.2",
    "prismjs": "^1.6.0",
    "stackblur-canvas": "^1.4.0",
    "twilio": "^3.19.1",
    "twilio-video": "^2.7.0"
  },
  "devDependencies": {
    "browserify": "^14.3.0",
    "copyfiles": "^1.2.0",
    "npm-run-all": "^4.0.2",
    "rimraf": "^2.6.1"
  }
}

読んでくれてありがとう!

回答

JasonPan Aug 24 2020 at 11:34

まず、使用しているサービスを確認しますAWSAzure Web App Services

どのサービスを使用する場合でも、gitを使用してWebアプリをデプロイすることをお勧めします。

  1. gitを使用して、AzureWebアプリサービスにデプロイします。

  2. gitを使用してawsにデプロイします。

Webアプリがローカルで正常に実行できることを確認するだけです。そして、あなたが使用するポートは、app.set('port', process.env.PORT || 3000);またはのようにconst port = process.env.PORT || 3000。つまり、3000ポートのローカルで正常に実行できます。

詳細については、別の投稿で私の答えを見ることができます。

  1. Azure-未処理の例外:System.IO.FileNotFoundException

  2. 同時に、JSアプリケーションパイプラインのインストールとビルドがハングします(サーバー用のExpress js、クライアント用のCreate-React-App)

によってWebアプリをデプロイする際のトラブルシューティングの方法を参照できますAction。私の答えがあなたを助けることができることを願っています。