Выход grunt-contrib-imagemin "Неустранимая ошибка: ENOENT, нет такого файла или каталога"
Команда grunt imagemin
выводит следующее в случайный файл.
Fatal error: ENOENT, no such file or directory 'app/public/assets/img/epg/recordseries.png'
Что смешно в том, что каждый раз, когда я снова запускаю команду grunt imagemin, ей удается обработать еще несколько файлов и заканчивать их выдачей одной и той же ошибки о другом файле.
Я использую
node v0.10.24
npm 1.3.21
[email protected]
[email protected] node_modules/grunt-contrib-imagemin
+-- [email protected]
+-- [email protected]
+-- [email protected] ([email protected], [email protected], [email protected])
+-- [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
Вот моя конфигурация grunt для задачи imagemin
:
grunt.config('imagemin', {
options: {
optimizationLevel: 3, // 0 to 7, default =7)
// pngquant: true
},
dynamic: { // Multiple target
files: [{
expand: true, // Enable dynamic expansion
cwd: '<%= context.source %>/assets/img/', // equal to app/wesource/assets/img/
src: ['!**/*-'+arrayToRegexStr(platformIgnoreList)+'**', '**/*.{png,jpg,jpeg,gif}'], // Actual patterns to match //
dest: '<%= context.public %>/assets/img/' // equal to app/public/assets/img/
}]
}
});
Ответы
Ответ 1
Удаление версии 0.5.0 и возврат к версии 0.3.0 со следующими командами должны восстановить предыдущую функциональность:
npm uninstall grunt-contrib-imagemin
npm install --save-dev [email protected]
Возникает проблема https://github.com/gruntjs/grunt-contrib-imagemin/issues/140, которая обрабатывается, и когда она исправлена, она должна быть безопасной для обновления.
Ответ 2
Следующие решения работают на...
- Ubuntu Linux 13.10 x64
- npm --version = 1.3.11
- node --version = v0.10.21
- grunt-contrib-imagemin = 0.5.0
Это взломать решение, но я обнаружил, что задача завершилась неудачно, когда она смотрит на целевой каталог, чтобы увидеть, что изображение PNG уже существует и оптимизировано. Задача будет последовательно завершаться, когда я буду запускать ее снова и снова, каждый раз, когда она завершит еще несколько изображений. И я мог бы повторить проблему, запустив grunt clean
, затем grunt imagemin
снова и снова.
Я видел ошибку:
bash
Fatal error: ENOENT, no such file or directory 'build-production/path-to/some-image.png'
Решение
Скопируйте изображения в целевой каталог непосредственно перед их оптимизацией. Таким образом, пропуски проверки и неоптимизированные изображения, которые копируются, заменяются их оптимизированным эквивалентом.
Задача
grunt.task.run(
'copy:imagemin',
'imagemin'
);
настройка копирования
copy: {
imagemin: {
files: [{
expand: true,
cwd: '<%= exponential.client.src %>',
src: ['images/**/*.{png,jpg,gif}'],
dest: '<%= exponential.client.buildProduction %>'
}]
}
}
конфигурация imagemin
imagemin: {
buildProduction: {
files: [{
expand: true,
cwd: '<%= exponential.client.src %>',
src: ['images/**/*.{png,jpg,gif}'],
dest: '<%= exponential.client.buildProduction %>'
}]
}
}
Ответ 3
Попробуйте использовать
cache: false
работал у меня.
Ответ 4
Мне удалось решить проблему, удалив optipng
, который я случайно установил в системе.
Ответ 5
У меня была такая же проблема с grunt-contrib-imagemin, и это было потому, что я бегала с sudo.
Мое решение состояло в том, чтобы сделать chown и chmod на всей структуре, а затем запустить grunt без sudo...
Ответ 6
для меня работала чистая установка модулей node
Я удаляю директорию node_modules и установил npm
после этого он снова работал у меня