vivliostyle-cli
vivliostyle-cli copied to clipboard
#550 breaks vivliostyle inside bubblewrap environments (getaddrinfo EAI_AGAIN localhost)
Hey,
it seems that #550 introduced new requirements that broke my integration into an bubblewrap environment:
bwrap --unshare-all --tmpfs /tmp --ro-bind /lib /lib --ro-bind /lib64 /lib64 --ro-bind /usr/lib /usr/lib --proc /proc --dev /dev --share-net --ro-bind vivliostyle /env /env/node /env/node_modules/.bin/vivliostyle build https://vivliostyle.github.io/vivliostyle_doc/samples/gon/index.html --log-level debug --render-mode local
vs-cli build > inlineConfig {
vs-cli input: {
vs-cli format: 'webbook',
vs-cli entry: 'https://vivliostyle.github.io/vivliostyle_doc/samples/gon/index.html'
vs-cli },
vs-cli output: [],
vs-cli renderMode: 'local',
vs-cli logLevel: 'debug',
vs-cli enableStaticServe: true
vs-cli } +0ms
vs-cli build > vivliostyleConfig {
vs-cli tasks: [ { entry: [], output: undefined, server: {} } ],
vs-cli inlineOptions: {
vs-cli input: {
vs-cli format: 'webbook',
vs-cli entry: 'https://vivliostyle.github.io/vivliostyle_doc/samples/gon/index.html'
vs-cli },
vs-cli output: [],
vs-cli renderMode: 'local',
vs-cli logLevel: 'debug',
vs-cli enableStaticServe: true,
vs-cli quick: false
vs-cli }
vs-cli } +5ms
vs-cli INFO Start building +1ms
vs-cli resolveTaskConfig > context / +1ms
vs-cli entering single entry config mode +1ms
vs-cli build > config {
vs-cli serverRootDir: Symbol(UseTemporaryServerRoot),
vs-cli workspaceDir: '/',
vs-cli themesDir: '/themes',
vs-cli entries: [],
vs-cli input: {
vs-cli format: 'webbook',
vs-cli entry: 'https://vivliostyle.github.io/vivliostyle_doc/samples/gon/index.html'
vs-cli },
vs-cli viewerInput: {
vs-cli type: 'webbook',
vs-cli webbookEntryUrl: 'https://vivliostyle.github.io/vivliostyle_doc/samples/gon/index.html',
vs-cli webbookPath: undefined
vs-cli },
vs-cli exportAliases: [],
vs-cli title: undefined,
vs-cli author: undefined,
vs-cli entryContextDir: '/',
vs-cli outputs: [
vs-cli {
vs-cli format: 'pdf',
vs-cli renderMode: 'local',
vs-cli preflight: undefined,
vs-cli preflightOption: [],
vs-cli path: '/output.pdf'
vs-cli }
vs-cli ],
vs-cli themeIndexes: Set(0) {},
vs-cli copyAsset: {
vs-cli includes: [],
vs-cli excludes: [],
vs-cli fileExtensions: [
vs-cli 'css', 'css.map',
vs-cli 'png', 'jpg',
vs-cli 'jpeg', 'svg',
vs-cli 'gif', 'webp',
vs-cli 'apng', 'ttf',
vs-cli 'otf', 'woff',
vs-cli 'woff2'
vs-cli ]
vs-cli },
vs-cli temporaryFilePrefix: '.vs-1751900906637.',
vs-cli size: undefined,
vs-cli cropMarks: false,
vs-cli bleed: undefined,
vs-cli cropOffset: undefined,
vs-cli css: undefined,
vs-cli customStyle: undefined,
vs-cli customUserStyle: undefined,
vs-cli singleDoc: false,
vs-cli quick: false,
vs-cli language: undefined,
vs-cli readingProgression: undefined,
vs-cli documentProcessorFactory: [Function: VFM],
vs-cli vfmOptions: { hardLineBreaks: false, disableFormatHtml: false },
vs-cli cover: undefined,
vs-cli timeout: 300000,
vs-cli sandbox: false,
vs-cli browser: { type: 'chromium', executablePath: undefined },
vs-cli proxy: undefined,
vs-cli image: 'ghcr.io/vivliostyle/cli:9.3.3',
vs-cli viewer: undefined,
vs-cli viewerParam: undefined,
vs-cli logLevel: 'debug',
vs-cli ignoreHttpsErrors: false,
vs-cli base: '/vivliostyle',
vs-cli server: { host: false, port: 13000, proxy: {}, allowedHosts: [] },
vs-cli static: {},
vs-cli rootUrl: 'http://localhost:13000',
vs-cli viteConfig: undefined,
vs-cli viteConfigFile: true
vs-cli } +0ms
vs-cli Created the temporary directory: /tmp/tmp-9-DVbbDbU7eZi6 +5ms
vs-cli build > viteConfig.configFile undefined +18ms
vs-cli createViteServer > viteInlineConfig {
vs-cli clearScreen: false,
vs-cli configFile: false,
vs-cli appType: 'custom',
vs-cli plugins: [
vs-cli {
vs-cli name: 'vivliostyle:dev-server',
vs-cli enforce: 'pre',
vs-cli configureServer: [Function: configureServer],
vs-cli configurePreviewServer: [Function: configurePreviewServer],
vs-cli buildStart: [AsyncFunction: buildStart],
vs-cli handleHotUpdate: [AsyncFunction: handleHotUpdate]
vs-cli },
vs-cli {
vs-cli name: 'vivliostyle:viewer',
vs-cli config: [Function: config],
vs-cli configureServer: [Function: configureServer],
vs-cli configurePreviewServer: [Function: configurePreviewServer],
vs-cli load: [Function: load]
vs-cli },
vs-cli {
vs-cli name: 'vivliostyle:browser',
vs-cli apply: [Function: apply],
vs-cli configureServer: [Function: configureServer],
vs-cli closeBundle: [Function: closeBundle]
vs-cli },
vs-cli {
vs-cli name: 'vivliostyle:static-serve',
vs-cli apply: [Function: apply],
vs-cli configureServer: [Function: configureServer],
vs-cli configurePreviewServer: [Function: configurePreviewServer]
vs-cli }
vs-cli ],
vs-cli server: {
vs-cli port: 13000,
vs-cli strictPort: false,
vs-cli host: false,
vs-cli allowedHosts: [],
vs-cli https: undefined,
vs-cli open: false,
vs-cli proxy: {},
vs-cli cors: {
vs-cli origin: /^https?:\/\/(?:(?:[^:]+\.)?localhost|127\.0\.0\.1|\[::1\])(?::\d+)?$/
vs-cli },
vs-cli headers: {},
vs-cli warmup: { clientFiles: [], ssrFiles: [] },
vs-cli middlewareMode: false,
vs-cli fs: { strict: true, deny: [Array], allow: [Array] },
vs-cli preTransformRequests: true,
vs-cli perEnvironmentStartEndDuringDev: false,
vs-cli sourcemapIgnoreList: [Function: isInNodeModules$1]
vs-cli },
vs-cli preview: {
vs-cli port: 13000,
vs-cli strictPort: false,
vs-cli host: false,
vs-cli allowedHosts: [],
vs-cli https: undefined,
vs-cli open: false,
vs-cli proxy: {},
vs-cli cors: {
vs-cli origin: /^https?:\/\/(?:(?:[^:]+\.)?localhost|127\.0\.0\.1|\[::1\])(?::\d+)?$/
vs-cli },
vs-cli headers: {}
vs-cli },
vs-cli customLogger: {
vs-cli hasWarned: false,
vs-cli info: [Function (anonymous)],
vs-cli warn: [Function (anonymous)],
vs-cli warnOnce: [Function (anonymous)],
vs-cli error: [Function (anonymous)],
vs-cli clearScreen: [Function: clearScreen],
vs-cli hasErrorLogged: [Function: hasErrorLogged]
vs-cli },
vs-cli cacheDir: '/.vite',
vs-cli root: '/tmp/tmp-9-DVbbDbU7eZi6'
vs-cli } +3ms
ERROR Error: getaddrinfo EAI_AGAIN localhost
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:internal/dns/promises:88:17)`
Any idea where this getaddrinfo EAI_AGAIN localhost comes from and what it requires exactly?
Best
anghenfil
Using --host 127.0.0.1 as cli argument resolves this issue. But why does it require a dns resolver at first hand? Maybe it would be useful to just use 127.0.0.1 as default instead of localhost?
Sorry, but I don't know much about bubblewrap, so I can't yet determine if this is a problem that the Vivliostyle CLI should solve or if it is a problem that depends on other ecosystems (Vite, Node.js, etc.). What happens when you run other web server applications, like Vite, inside bubblewrap with a similar configuration?