J'ai un angulaire 5 App.
C'est ce que j'ai dans mon package.json
{
"name": "web",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "node server.js",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"postinstall": "ng build --aot --prod"
},
"private": true,
"dependencies": {
"@angular/animations": "5.1.0",
"@angular/cli": "^1.6.4",
"@angular/common": "5.0.3",
"@angular/compiler": "5.0.3",
"@angular/compiler-cli": "5.0.3",
"@angular/core": "5.0.3",
"@angular/forms": "5.0.3",
"@angular/http": "5.0.3",
"@angular/platform-browser": "5.0.3",
"@angular/platform-browser-dynamic": "5.0.3",
"@angular/router": "5.0.3",
"@ng-bootstrap/ng-bootstrap": "1.0.0-beta.5",
"@ngx-translate/core": "8.0.0",
"@types/jquery": "3.2.16",
"angular2-image-upload": "^1.0.0-rc.0",
"bootstrap": "4.0.0-beta.2",
"core-js": "2.4.1",
"express": "^4.16.2",
"jquery": "3.2.1",
"jquery-slimscroll": "1.3.8",
"ngx-toastr": "8.0.0",
"ngx-uploader": "4.2.1",
"pace-js": "1.0.2",
"popper.js": "1.13.0",
"rxjs": "5.5.0",
"sticky-kit": "1.1.3",
"TypeScript": "~2.4.2",
"zone.js": "0.8.4"
},
"devDependencies": {
"@angular/language-service": "5.0.3",
"@types/jasmine": "~2.5.53",
"@types/jasminewd2": "~2.0.2",
"@types/node": "~6.0.60",
"codelyzer": "~3.2.0",
"jasmine-core": "~2.6.2",
"jasmine-spec-reporter": "~4.1.0",
"karma": "~1.7.0",
"karma-chrome-launcher": "~2.1.1",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "1.2.1",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "0.2.2",
"protractor": "~5.1.2",
"ts-node": "~3.2.0",
"tslint": "~5.7.0"
},
"engines": {
"node": "8.9.4",
"npm": "5.6.0"
}
}
J'ai créé un serveur.js avec ce contenu.
constexpress=require('express');
constapp=expres();
constpath=require('path');
app.us(express.static(__dirname+'/dist'));
app.listen(process.env.PORT||8080);
//PathLocationStradegy
app.get('/'function(req,res) {
res.sendFile(path.join(__dirname+'/dist/index.html'));
});
console.log('Console Listening');
Ensuite, je lance ces commandes
heroku auth:login
Email : [email protected]
Password : #########
heroku create iproject-demo
heroku git:remote iproject-demo
git status
git add -A
git Push heroku master
J'ai essayé de courir ça
⚡️ web heroku ps
Free dyno hours quota remaining this month: 998h 46m (99%)
For more information on dyno sleeping and how to upgrade, see:
https://devcenter.heroku.com/articles/dyno-sleeping
=== web (Free): npm start (1)
web.1: crashed 2018/01/27 14:18:58 -0500 (~ 1m ago)
tout va bien.
Heroku Log show Construire le succès.
-----> Node.js app detected
-----> Creating runtime environment
NPM_CONFIG_LOGLEVEL=error
NPM_CONFIG_PRODUCTION=true
NODE_VERBOSE=false
NODE_ENV=production
NODE_MODULES_CACHE=true
-----> Installing binaries
engines.node (package.json): unspecified
engines.npm (package.json): unspecified (use default)
Resolving node version 8.x...
Downloading and installing node 8.9.4...
Using default npm version: 5.6.0
-----> Restoring cache
Skipping cache restore (not-found)
-----> Building dependencies
Installing node modules (package.json)
added 26 packages in 5.46s
-----> Caching build
Clearing previous node cache
Saving 2 cacheDirectories (default):
- node_modules
- bower_components (nothing to cache)
-----> Build succeeded!
-----> Discovering process types
Procfile declares types -> (none)
Default types for buildpack -> web
-----> Compressing...
Done: 34.4M
-----> Launching...
Released v3
https://iproject-demo.herokuapp.com/ deployed to Heroku
MAIS quand je vais à l'APP:
https://iproject-demo.herokuapp.com/
Je vois ça
Comment peut-on s'y prendre et déboguer plus loin?
Je suis ouvert à toute suggestion en ce moment.
Toute astuce/suggestion/aide sur ce sera sera très apprécié!
Voici comment je crée mon application angulaire pour la déployer et travailler sur Heroku:
server.js
devrait ressembler à quelque chose comme ça: https://hastebin.com/zavehahide.jspackage.json
, déplacez @angular/cli
et @angular/compiler-cli
de devDependencies
à dependencies
package.json
, ajoutez postinstall: ng build --prod
et start: node server.js
à scripts
Vous devriez être prêt à partir.
Habituellement, lorsque cette erreur se produit, j'ai des problèmes avec les dépendances de nœuds. Essayez de supprimer le dossier node_modules et le dossier dist. À partir de là, tout re-tourne, cela imite comment heroku construira votre projet.
Vous devrez faire face à un problème de mémoire dépassé si vous voulez construire une prod sur heroku. Donc, le type gratuit ne fonctionnera pas.
Essayez donc de construire en local et de servir vos fichiers dist en utilisant express.
Utiliser la même commande dans le fichier PROC
Heroku local ou Heroku local: vérifiez vos modifications en local
Je suggère pour plus de simplicité, si vous souhaitez déployer le backend sur heroku comme api et le frontal sur github et activer le partage de ressources croisées sur ordinateur de navigation, je suis en train de construire cette application, ce qui est mon plan sinon, si vous en recevez bonne nouvelle de cette façon vous faites me mettre à jour
En réponse comment déboguer plus loin. Lancez votre application, puis connectez-vous immédiatement à Heroku, accédez à votre application, puis dans le menu déroulant "Plus", cliquez sur "Afficher les journaux". Devrait vous aider!
Je crois qu’il existe un moyen de visualiser les journaux en temps réel via le terminal afin que vous puissiez voir exactement ce qui ne fonctionne pas.
Dans votre server.js
, vous devez rediriger votre appel http vers l'index.
app.route('/*', function(req,res) {
res.redirect(__dirname + '/dist/index.html')
})
Dans ce qui précède, tout appel vers votre fichier index.html sera redirigé.
Corrigez votre code dans Server.js
const express = require('express');
const app = express();
const path = require('path');
app.use(express.static(__dirname+'/dist'));
app.listen(process.env.PORT||8080);
//Path Location Strategy
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname+'/dist/index.html'));
});
console.log('Console Listening');
Pour référence future -
essayez d'exécuter la commande logs
avant d'appuyer sur l'URL.
$ heroku logs
Ensuite, consultez les journaux pour plus de détails.
Essayez d’ajouter @angular-devkit/build-optimizer
en tant que package dans le fichier package.json.
"dependencies": {
"@angular-devkit/build-optimizer": "^0.4.0",
...
}
Cela permet à l'indicateur de post-installation --aot
de s'exécuter. Pour une raison quelconque, ce paquet n'est plus intégré.