vivliostyle-cli icon indicating copy to clipboard operation
vivliostyle-cli copied to clipboard

#550 breaks vivliostyle inside bubblewrap environments (getaddrinfo EAI_AGAIN localhost)

Open anghenfil opened this issue 9 months ago • 2 comments

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

anghenfil avatar Jul 07 '25 15:07 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?

anghenfil avatar Jul 07 '25 15:07 anghenfil

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?

spring-raining avatar Jul 08 '25 16:07 spring-raining