Próbuję przesłać moją aplikację node.js do Azure
Jestem początkującym w node.js i muszę hostować aplikację, której osobiście nie napisałem na serwerze Azure, do testów. Witryna działa dobrze zarówno lokalnie, jak i za pomocą ngrok. Jednak kiedy hostuję go na lazurze, pojawia się następujący błąd:
[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.
Teraz muszę podkreślić, że zupełnie nie znam node.js, ale wydaje mi się, że żądania http są ustawione poprawnie. Oto kod mojego pliku index.js, w którym, jak sądzę, może leżeć problem.
'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);
});
Oto mój plik 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"
}
}
Dziękuję za przeczytanie!
Odpowiedzi
Najpierw upewnij się, z jakich usług korzystasz, AWSlub Azure Web App Services?
Niezależnie od usług, z których korzystasz, zalecamy użycie git do wdrożenia aplikacji internetowej.
Użyj git, aby wdrożyć w Azure Web App Services.
Użyj git do wdrożenia w aws.
Po prostu upewnij się, że Twoja aplikacja internetowa może pomyślnie działać lokalnie. I port, którego używasz jak app.set('port', process.env.PORT || 3000);lub const port = process.env.PORT || 3000. Oznacza to, że możesz z powodzeniem pracować lokalnie z portem 3000.
Aby uzyskać więcej informacji, możesz zobaczyć moją odpowiedź w innym poście.
Azure - nieobsługiwany wyjątek: System.IO.FileNotFoundException
Jednocześnie instalacja i kompilacja aplikacji JS zawiesza się (Express js dla serwera, Create-React-App for Client)
Możesz zapoznać się ze sposobem rozwiązywania problemów podczas wdrażania aplikacji internetowej przez Action. Mam nadzieję, że moja odpowiedź może ci pomóc.