Pourquoi est-Gulp à défaut au hasard avec d'erreur ENOENT (ou) à défaut de générer une sortie (ou accidentellement supprimé)?
Environnement Logiciel
Je suis en utilisant NodeJS v4.2.1 sur Windows.
J'ai inclus mon gulpfile.js
, bower.json
, et package.json
fichiers dans le bas.
Des Informations Supplémentaires
- Je n'ai pas d'IDE en cours d'exécution. Donc, il est certainement pas un problème avec les fichiers verrouillés par un programme externe.
- Je suis en cours d'exécution tout sur l'invite de commande.
Question
- Est quelque chose de mal avec mon
gulpfile.js
? - Est-ce un bug avec
NodeJS v4.2.1
? - Est-ce un bug avec Gulp?
Problème
Je suis confronté à ces deux problèmes, quand je lance gulp
à l'invite de commandes.
Le problème n ° 1
Mon build
dossier ne pourra pas être créée à chaque fois quand je lance gulp
.
Quand je le lance pour la première fois, il crée le build
dossier avec copy-bower
Gulp sortie de la tâche d'artefacts.
Quand je lance une nouvelle fois, après cela, build
dossier n'est pas créé.
La gorgée de sortie de la console montre clairement mon copy-bower
tâche couru après la clean
tâche, mais je ne vois pas le build
dossier créé.
[21:21:32] Using gulpfile
[21:21:32] Starting 'clean'...
[21:21:32] Finished 'clean' after 3.66
[21:21:32] Starting 'copy-bower'...
[21:21:32] Finished 'copy-bower' after
[21:21:32] Starting 'default'...
[21:21:32] Finished 'default' after 6.
Directory: C:\Users\stun\Desktop\test-app
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 10/22/2015 9:00 PM bower_components
d----- 10/22/2015 8:59 PM node_modules
-a---- 10/22/2015 9:30 PM 347 bower.json
-a---- 10/22/2015 9:31 PM 421 gulpfile.js
-a---- 10/22/2015 9:30 PM 301 package.json
Problème #2
De temps en temps, je reçois un de ces erreurs.
events.js:141
throw er; //Unhandled 'error' event
^
Error: ENOENT: no such file or directory, chmod 'C:\Users\stun\Desktop\test-app\build\bower_components\jquery\dist\jquery.min.map'
at Error (native)
Une Autre Erreur
events.js:141
throw er; //Unhandled 'error' event
^
Error: ENOENT: no such file or directory, stat 'C:\Users\stun\Desktop\test-app\build\bower_components\bootstrap\dist\fonts'
at Error (native)
gulpfile.js
var gulp = require('gulp'),
del = require('del');
gulp.task('clean', function () {
del(['build']);
});
gulp.task('copy-bower', ['clean'], function () {
var src = [
'./bower_components/bootstrap/dist/**',
'./bower_components/jquery/dist/*'
];
gulp.src(src, { base: '.' })
.pipe(gulp.dest('./build/'));
});
gulp.task('default', ['copy-bower'], function () { });
de verdure.json
{
"name": "test-app",
"description": "testing gulp and bower",
"main": "",
"moduleType": [],
"authors": [""],
"license": "MIT",
"homepage": "",
"private": true,
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
],
"dependencies": {
"bootstrap": "~3.3.5"
}
}
paquet.json
{
"name": "test-app",
"version": "1.0.0",
"description": "testing gulp and bower",
"main": "",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"del": "^2.0.2",
"gulp": "^3.9.0"
}
}
- Est-ce dans une pension quelque part que je peux cloner?
- Louis de réponse ci-dessous est correct. Je n'ai pas
return
la"clean"
tâche, et cela a provoqué les autres tâches à l'échec de façon aléatoire à cause des verrous de fichier pendant l'écriture et le supprime. Je n'ai pas de repo pour ce que je ne fais que jouer avec le Trait et de Verdure. Tous les fichiers que j'ai sontgulpfile.js
,package.json
, etbower.json
à partir de ci-dessus.
Vous devez vous connecter pour publier un commentaire.
Vos tâches ne retourne rien, ou l'appeler tous les rappels, donc Gulp pense que vos tâches sont effectuées immédiatement. En particulier, il n'attendez pas que votre
clean
tâche d'avoir fini son travail avant de commencer la copie de la charmille de fichiers. Les deux peuvent entrer en conflit et le résultat dans le système de fichiers des erreurs.Modifier votre code à ceci:
run-sequence
pourrait être utile pour synchroniser gulp tâches lors de certaines tâches dépend de la sortie des autres! npmjs.com/package/run-sequenceSi le résultat indique que l'une des tâches est de commencer avant que la précédente est terminée (en particulier "propre"), comme ceci (voir la "construction" de départ avant que le "propre" est terminée):
Utiliser ces techniques pour résoudre le problème:
Technique 1 - retour d'une promesse
Comme @Louis a écrit, de transformer ceci:
dans cette:
Technique 2 - la tâche de dépendance
de transformer ceci:
à ceci:
Technique 3 - les tâches de commande
de transformer ceci:
dans cette:
Malheureusement je trouve que ce problème persiste. Le esiest solution (pour moi) est d'utiliser de l'exécution de la séquence:
trouvé: https://davidwalsh.name/gulp-run-sequence