Ich versuche, eine App zu bauen, und ich entfalteten sie Heroku aber in Browser erhalte ich die Fehlermeldung:NodeJS Projekt bereitstellen erfolgreich Heroku aber App Crashed
Application error
An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details.
In Heroku Protokolle erhalte ich:
2017-05-22T03:58:35.925318+00:00 app[api]: Release v19 created by user [email protected]
2017-05-22T03:58:35.925318+00:00 app[api]: Deploy 53f249eb by user [email protected]
2017-05-22T03:58:08.000000+00:00 app[api]: Build succeeded
2017-05-22T03:58:36.628543+00:00 heroku[web.1]: State changed from crashed to starting
2017-05-22T03:58:42.060016+00:00 heroku[web.1]: Starting process with command `: node server.js`
2017-05-22T03:58:44.343952+00:00 heroku[web.1]: State changed from starting to crashed
2017-05-22T03:58:44.330459+00:00 heroku[web.1]: Process exited with status 0
2017-05-22T03:58:45.036725+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=myappfrontend.herokuapp.com request_id=c13cbc90-b663-4202-bf23-fdd7839bd11a fwd="124.13.47.105" dyno= connect= service= status=503 bytes= protocol=https
2017-05-22T03:58:46.355457+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=myappfrontend.herokuapp.com request_id=10d85673-140b-4510-a5cb-b6b3db20e1a7 fwd="124.13.47.105" dyno= connect= service= status=503 bytes= protocol=https
Auf deploy i erhalten:
remote: Building source:
remote:
remote: -----> Node.js app detected
remote:
remote: -----> Creating runtime environment
remote:
remote: NPM_CONFIG_LOGLEVEL=error
remote: NPM_CONFIG_PRODUCTION=false
remote: NODE_VERBOSE=false
remote: NODE_ENV=production
remote: NODE_MODULES_CACHE=true
remote:
remote: -----> Installing binaries
remote: engines.node (package.json): 7.10.0
remote: engines.npm (package.json): 4.2.0
remote:
remote: Downloading and installing node 7.10.0...
remote: npm 4.2.0 already installed with node
remote:
remote: -----> Restoring cache
remote: Loading 2 from cacheDirectories (default):
remote: - node_modules
remote: - bower_components (not cached - skipping)
remote:
remote: -----> Building dependencies
remote: Installing node modules (package.json)
remote:
remote: -----> Caching build
remote: Clearing previous node cache
remote: Saving 2 cacheDirectories (default):
remote: - node_modules
remote: - bower_components (nothing to cache)
remote:
remote: -----> Build succeeded!
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 47.1M
remote: -----> Launching...
remote: Released v20
remote: https://myappfrontend.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
ich habe ein procfile: web: Knoten server.js
Mein server.js:
"use strict";
var express = require('express'),
bodyParser = require('body-parser'),
fs = require('fs'),
app = express(),
customers = JSON.parse(fs.readFileSync('data/customers.json', 'utf-8')),
states = JSON.parse(fs.readFileSync('data/states.json', 'utf-8'));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
//Would normally copy necessary scripts into src folder (via grunt/gulp) but serving
//node_modules directly to keep everything as simple as possible
app.use('/node_modules', express.static(__dirname + '/node_modules'));
//The src folder has our static resources (index.html, css, images)
app.use(express.static(__dirname + '/src'));
app.post('/api/auth/login', (req, res) => {
var userLogin = req.body;
//Add "real" auth here. Simulating it by returning a simple boolean.
res.json(true);
});
app.post('/api/auth/logout', (req, res) => {
res.json(true);
});
// redirect all others to the index (HTML5 history)
app.all('/*', function(req, res) {
res.sendFile(__dirname + '/src/index.html');
});
app.set('port', (process.env.PORT || 5000));
app.listen(app.get('port'), function() {
console.log('Node app is running on port', app.get('port'));
});
und schließlich meine package.json:
{
"name": "angular-jumpstart",
"author": "Dan Wahlin",
"version": "2.0.0",
"repository": "https://github.com/danwahlin/angular-jumpstart",
"scripts": {
"clean": "del-cli \"src/app/**/*.js\" \"src/app/**/*.js.map\" \"src/devDist\" \"src/dist\"",
"build": "npm run clean && webpack --progress --watch",
"tsc": "tsc",
"tsc:w": "tsc -w",
"start:nodemon": "tsc && concurrently \"tsc -w\" \"nodemon server.js\" ",
"start": "tsc && concurrently \"tsc -w\" \"node server.js\" "
},
"license": "ISC",
"dependencies": {
"@angular/common": "4.0.0",
"@angular/compiler": "4.0.0",
"@angular/compiler-cli": "4.0.0",
"@angular/core": "4.0.0",
"@angular/forms": "4.0.0",
"@angular/http": "4.0.0",
"@angular/platform-browser": "4.0.0",
"@angular/platform-browser-dynamic": "4.0.0",
"@angular/router": "4.0.0",
"@angular/upgrade": "4.0.0",
"@angular/platform-server": "4.0.0",
"@angular/tsc-wrapped": "4.0.0",
"@angular/animations": "4.0.0",
"systemjs": "0.19.47",
"core-js": "2.4.1",
"rxjs": "5.2.0",
"zone.js": "0.8.5",
"express": "4.15.2",
"body-parser": "1.17.1"
},
"devDependencies": {
"@types/node": "7.0.11",
"@types/google-maps": "3.2.0",
"concurrently": "3.4.0",
"lite-server": "2.3.0",
"typescript": "2.2.1",
"opn": "4.0.2",
"del-cli": "0.2.1",
"webpack": "2.3.2",
"html-webpack-plugin": "2.28.0",
"webpack-merge": "4.1.0",
"extract-text-webpack-plugin": "2.1.0",
"angular2-template-loader": "0.6.2",
"angular-router-loader": "0.5.0",
"awesome-typescript-loader": "3.1.2",
"css-loader": "0.27.3",
"to-string-loader": "1.1.5",
"raw-loader": "0.5.1",
"style-loader": "0.16.0",
"@ngtools/webpack": "1.3.0"
},
"engines": {
"node": "7.10.0",
"npm": "4.2.0"
}
}
Jede Idee, warum es nicht funktioniert? Heroku logs zeigt keine hilfreiche Fehlermeldung an.
versuchen Sie, Ihren Server in Ihrem lokalen auszuführen: verwenden Sie den Befehl 'heroku run local'. Es scheint, dass auf Ihrem Server ein Fehler aufgetreten ist. – chenkehxx
Ich führe den Befehl 'heroku run local' Ich bekomme den Fehler:" bash: Zeile 0: local: kann nur in einer Funktion verwendet werden ". Ich habe versucht, mit "Heroku lokalen Web" zu laufen, ich bekomme '[WARN] Kann Eigenschaft '1' von null nicht lesen [OKAY] package.json Datei gefunden - versuchen 'Npm Start' [WARN] Keine ENV-Datei gefunden [WARN] Kann die Eigenschaft '1' von null nicht lesen [OKAY] package.json Datei gefunden - versuche 'npm start'' Ich kann von localhost: 5000 auf meine App zugreifen. – max
Es bedeutet also, dass etwas mit Ihrem 'package.json' nicht stimmt, Sie müssen es sorgfältig prüfen. oder Sie können versuchen, den Befehl auszuführen, den Sie in 'Procfile' definiert haben. – chenkehxx