Я пытаюсь выполнить критическое задание Адди Османи в контейнере Docksal и получаю ошибки, выходящие за рамки базы знаний.
var config = {
critical: {
width: 1280,
height: 900,
dest: 'critical-css/',
urls: {
'/': 'home',
'/test-page': 'page',
'/test-place': 'location'
}
}
};
var configLocal = {
critical: {
baseDomain: 'http://sitename.docksal/'
}
};
// Allow requests to work with non-valid SSL certificates.
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
// gulp.task('critical', ['critical:clean'], function (done) {
gulp.task('critical', function (done) {
Object.keys(config.critical.urls).map(function(url, index) {
var pageUrl = urljoin( configLocal.critical.baseDomain, url );
var destCssPath = path.join(process.cwd(), config.critical.dest, config.critical.urls[url] + '.css' );
return rp({uri: pageUrl, strictSSL: false}).then(function (body) {
var htmlString = body
.replace(/href="\//g, 'href="' + urljoin(configLocal.critical.baseDomain, '/'))
.replace(/src="\//g, 'src="' + urljoin(configLocal.critical.baseDomain, '/'));
//gutil.log('Generating critical css', gutil.colors.magenta(destCssPath), 'from', pageUrl);
critical.generate({
base: osTmpdir(),
html: htmlString,
src: '',
dest: destCssPath,
minify: true,
width: config.critical.width,
height: config.critical.height
});
if (index+1 === Object.keys(config.critical.urls).length) {
return done();
}
});
});
});
При получении задания я получаю следующую ошибку:
(узел: 1766) UnhandledPromiseRejectionWarning: Ошибка: не удалось запустить Chrome!/var/www/docroot/themes/custom/sitename/node_modules/puppeteer/.local-chromium/linux-594312/chrome-linux/chrome: ошибка при загрузке общих библиотек: libX11-xcb.so.1: невозможно открыть общий объектfile: Нет такого файла или каталога
УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
Эта ссылка говорит о том, что мне нужно добавить в свой файл Docker.Это докерский файл Docksal?Или где-нибудь в проекте?
Запустить Chrome без поддержки и запустить его в Docker может быть сложно.В комплекте Chromium, который устанавливает Puppeteer, отсутствуют необходимые зависимости совместно используемой библиотеки.
Для исправления вам потребуется установить отсутствующие зависимости и последний пакет Chromium в ваш файл Dockerfile ...