nodemon application s'est écrasé en attente pour les modifications de fichiers avant de commencer
MODIFIER
Après d'autres tests, j'ai trouvé que ce qui se passe avec les deux gorgée et grunt sur cette application et sur l'installation par défaut de mean.js. Je suis en cours d'exécution au niveau local sur un Mac. Quand je marche, soit de l'app à l'aide de "nœud server.js" ils ne tombe pas en panne.
Je suis en utilisant un MOYEN de pile avec grunt-nodemon et le nœud de l'écraser lorsqu'une express URL est accessible. Il n'est pas toujours cohérente. Parfois cela fonctionne, parfois nœud accidents de droit lorsque l'URL est frappé à la retraite pas de données, et d'autres fois, j'obtiens une réponse et un nœud s'est écrasé immédiatement après.
Navigateur de la console de réponse:
http://localhost:8000/api/users net::ERR_CONNECTION_REFUSED
Terminal de sortie:
Mongoose: users.insert({ firstname: 'mike', lastname: 'jones', email:'[email protected]', role: 'admin', password: 'mike', _id: ObjectId("57485c16fc11894b96c28057"), created: new Date("Fri, 27 May 2016 14:39:18 GMT"), __v: 0 })
user.save success
node crash
[nodemon] app crashed - waiting for file changes before starting...
Dans ce cas, la requête POST est passé par, l'utilisateur a été ajouté, puis le nœud s'est écrasé, mais parfois il se bloque avant un POST. Nœud également à l'occasion des accidents de la requête GET.
gruntfile.js:
module.exports = function(grunt) {
//Load grunt tasks automatically
require('load-grunt-tasks')(grunt);
var pkg = grunt.file.readJSON('package.json');
var options = {
paths: {
app: 'app',
assets: 'app/assets',
dist: 'app/dist',
distAssets: 'app/dist/assets',
html: 'app/html',
htmlTmp: '.tmp/htmlsnapshot',
htmlAssets: 'app/html/assets',
index: 'app/dist/index.html',
indexDev: 'app/index.html',
indexTmp: '.tmp/html/index.html'
},
pkg: pkg,
env: {
test: {
NODE_ENV: 'test'
},
dev: {
NODE_ENV: 'development'
},
prod: {
NODE_ENV: 'production'
}
}
};
//Load grunt configurations automatically
var configs = require('load-grunt-configs')(grunt, options);
//Define the configuration for all the tasks
grunt.initConfig(configs);
//Connect to the MongoDB instance and load the models
grunt.task.registerTask('mongoose', 'Task that connects to the MongoDB instance and loads the application models.', function () {
//Get the callback
var done = this.async();
//Use mongoose configuration
var mongoose = require('./config/lib/mongoose.js');
//Connect to database
mongoose.connect(function (db) {
done();
});
});
grunt.registerTask('bumper', ['bump-only']);
grunt.registerTask('css', ['sass']);
grunt.registerTask('default', [
'sass',
'copy:dev',
'nodemon',
'concurrent:dev',
'watch',
'mongoose'
]);
grunt.registerTask('shared', [
'clean:demo',
'copy:demo',
'sass',
'ngconstant',
'useminPrepare',
'concat:generated',
'cssmin:generated',
'uglify:generated',
'filerev',
'usemin',
'imagemin',
'usebanner'
]);
grunt.registerTask('demo', [
'shared',
'copy:postusemin',
'grep:demo'
]);
grunt.registerTask('dist', [
'shared',
'copy:postusemin',
'copy:dist',
'grep:dist',
'compress',
'copy:postusemin',
'grep:demo',
]);
grunt.loadNpmTasks('grunt-forever');
};
default.js
module.exports.tasks = {
//version update
bump: {
options: {
files: ['package.json', 'bower.json'],
pushTo: 'origin'
}
},
//application constants
ngconstant: {
options: {
dest: '<%= paths.assets %>/js/app.constants.js',
name: 'app.constants',
}
},
//remove all bs from css
cssmin: {
options: {
keepSpecialComments: 0
}
},
markdown: {
all: {
files: [
{
src: 'README.md',
dest: '<%= paths.assets %>/tpl/documentation.html'
}
],
options: {
template: '<%= paths.assets %>/tpl/_documentation_template.html',
}
}
}
};
dev.js:
var _ = require('lodash'),
defaultAssets = require('./assets/default'),
testAssets = require('./assets/test'),
testConfig = require('./env/test'),
fs = require('fs'),
path = require('path');
module.exports.tasks = {
//copy files to correct folders
copy: {
dev: {
files: [
{ expand: true, src: '**', cwd: '<%= paths.app %>/bower_components/font-awesome/fonts', dest: '<%= paths.assets %>/fonts' },
{ expand: true, src: '**', cwd: '<%= paths.app %>/bower_components/material-design-iconic-font/fonts', dest: '<%= paths.assets %>/fonts' },
{ expand: true, src: '**', cwd: '<%= paths.app %>/bower_components/roboto-fontface/fonts', dest: '<%= paths.assets %>/fonts' },
{ expand: true, src: '**', cwd: '<%= paths.app %>/bower_components/weather-icons/font', dest: '<%= paths.assets %>/fonts' },
{ expand: true, src: '**', cwd: '<%= paths.app %>/bower_components/bootstrap-sass/assets/fonts/bootstrap', dest: '<%= paths.assets %>/fonts' }
]
}
},
//watch for changes during development
watch: {
js: {
files: ['Gruntfile.js', '<%= paths.assets %>/js/**/*.js'],
tasks: ['jshint'],
options: {
livereload: true
}
},
css: {
files: [
'<%= paths.assets %>/css/**/*.scss'
],
tasks: ['sass'],
options: {
livereload: true
}
},
markdown: {
files: [
'README.md'
],
tasks: ['markdown']
},
tasks: [ 'express:dev' ],
},
//debug while developing
jshint: {
all: ['Gruntfile.js', '<%= paths.assets %>/js/**/*.js']
},
concurrent: {
dev: {
tasks: ['nodemon', 'node-inspector', 'watch'],
options: {
logConcurrentOutput: true
}
}
},
nodemon: {
dev: {
script: 'server.js',
options: {
nodeArgs: ['--debug'],
ext: 'js,html',
callback: function (nodemon) {
nodemon.on('crash', function (event) {
console.log(event);
});
},
watch: _.union(defaultAssets.server.gruntConfig, defaultAssets.server.views, defaultAssets.server.allJS, defaultAssets.server.config)
}
}
},
forever: {
server1: {
options: {
index: 'server.js',
//logDir: 'logs'
}
}
}
};
Angulaire de la fonction de contrôleur:
$scope.addUser = function(){
var user = {
firstname: $scope.firstname,
lastname: $scope.lastname,
email: $scope.email,
role: $scope.role.selected,
password: $scope.password
};
$http.post('/api/userAdd', user ).then(function successCallback(response) {
$location.path('/users');
}, function errorCallback(response) {
console.log('error addding user');
console.log(response);
});
};
Express la route:
User = require('../models/user.js');
module.exports = function (app) {
app.get('/api/users', function (req, res) {
User.find({}, function (err, users) {
if ( err ) {
res.send({
message : 'error finding users',
success: false
});
} else {
res.json(users);
}
});
});
app.get('/api/users', function (req, res) {
User.find({fields: {}}, function (err, docs) {
res.json(docs);
});
});
app.post('/api/userAdd', function (req, res) {
var user = new User(req.body);
user.save( function( err, user ){
if (err){
console.log('user.save error');
console.log(err);
res.send({
success: false
});
} else {
console.log('user.save success');
res.send({
success: true
});
}
});
});
};
Je suis également en train de tester avec les Chromes Avancé RESTE extension et à toute demande l'aide de cet outil nœud se bloque immédiatement.
Je suis de nouveau à DIRE si j'ai loupé quelque chose ici qui est à l'origine de l'accident? Des idées?
node server.js
Exécutant manuellement semble résoudre le problème, merci. Est-ce à dire que j'ai un problème ou une mauvaise configuration avec Grunt?
Pas vraiment. J'ai supposé qu'en l'exécutant autonome, vous obtiendrez de voir pourquoi il se bloque. Il n'était pas censé travailler mieux comme ça ;D
Ajouté le plein gruntfile.js, default.js et dev.js qui sont utilisés et la cause de l'erreur. En espérant que les aide en quelque sorte.
Maintenant les tests avec
node --debug server.js
je reçois le message d'erreur Segmentation fault: 11
et le nœud se bloque. Mais si je n'utilise pas --debug
il n'y a pas d'accident et pas de message d'erreur
OriginalL'auteur MTD | 2016-05-27
Vous devez vous connecter pour publier un commentaire.
- Je mettre à jour nœud à partir de v4.2.6 v4.4.5 correction du problème avec la valeur par défaut mean.js installer. Je vais construire à partir de là.
OriginalL'auteur MTD
J'ai rencontré ce défi lorsque l'on travaille sur nexmo sms app.
Pour réparer la panne, allez à votre
app.js
. Si vous avez ces lignes de code. Son normalement sur les premières lignes...Simplement supprimer/supprimer la première ligne de code
import { Socket } from 'dgram';
Laissant ceux-ci...
et redémarrer votre application à l'aide de "nodemon"
Fait-il?
OriginalL'auteur Umekalu
Ce qui se passe à cause de tout le serveur en cours d'exécution du processus en arrière-plan.
Donc, tout ce que vous devez faire est d'arrêter de la borne.
Astuce rapide
Tous les tuer par l'exécution de ce terminal :
puis redémarrez nodemon.
Laissez-moi savoir si il est utile et upvote il vous plaît.Merci.
OriginalL'auteur as8297
Plus probable que votre nœud démon est toujours en cours d'exécution.
ps -eaf | grep node
si ça donne quelque chose comme
abhinav 15759 15748 0 19:30 pts/2 00:00:00 sh -c nodemon server.js
abhinav 15760 15759 0 19:30 pts/2 00:00:00 node /home/abhinav/Documents/Projects/WebD/Node/smartbrain/smart-brain-api/node_modules/.bin/nodemon server.js
abhinav 15812 15801 0 19:31 pts/2 00:00:00 sh -c nodemon server.js
essayez:
killall node
OriginalL'auteur Abhinav Anand