Open TimoGlastra opened 1 week ago
Upon further debugging I found it will throw the segmentation fault when node-gyp-build
is loaded during build. So it seems to actually execute the code during build and try to load the native binary.
So I think the main issue is, why the ssr.external
is not being picked up, and ignoring the import of @hypereldger/aries-askar-nodejs
during build. Ideally it just keeps the reference to that package, and it needs to be installed in node_modules when you want to run the server.
Describe the bug
When I try to build my sveltekit project using SSR, and including
@hyperledger/aries-askar-nodejs
, which uses FFI the project errors with a segmentation fault. It is not clear what is going wrong, or why it is erroring.When I remove the import of this library the segmentation fault disappears. I've tried excluding the library from being packages in all ways possible (with optimizeDeps, external, etc..), but nothing seems to work.
Reproduction
https://github.com/TimoGlastra/sveltekit-askar-bug
Steps to reproduce
run
pnpm install
and thenpnpm build
System Info
Used Package Manager
pnpm
Logs
Click to expand!
```shell > vite build "--debug" vite:config bundled config file loaded in 385.68ms +0ms vite:config using resolved config: { vite:config plugins: [ vite:config 'vite:build-metadata', vite:config 'vite:watch-package-data', vite:config 'vite:pre-alias', vite:config 'alias', vite:config 'vite-plugin-svelte', vite:config 'vite:modulepreload-polyfill', vite:config 'vite:resolve', vite:config 'vite:html-inline-proxy', vite:config 'vite:css', vite:config 'vite:esbuild', vite:config 'vite:json', vite:config 'vite:wasm-helper', vite:config 'vite:worker', vite:config 'vite:asset', vite:config 'vite-plugin-sveltekit-setup', vite:config 'vite-plugin-sveltekit-virtual-modules', vite:config 'vite-plugin-sveltekit-guard', vite:config 'vite-plugin-sveltekit-compile', vite:config 'vite:wasm-fallback', vite:config 'vite:define', vite:config 'vite:css-post', vite:config 'vite:build-html', vite:config 'vite:worker-import-meta-url', vite:config 'vite:asset-import-meta-url', vite:config 'vite:force-systemjs-wrap-complete', vite:config 'commonjs', vite:config 'vite:data-uri', vite:config 'vite:dynamic-import-vars', vite:config 'vite:import-glob', vite:config 'vite:build-import-analysis', vite:config 'vite:esbuild-transpile', vite:config 'vite:manifest', vite:config 'vite:reporter', vite:config 'vite:load-fallback' vite:config ], vite:config ssr: { vite:config target: 'node', vite:config external: [ '@hyperledger/aries-askar-nodejs' ], vite:config noExternal: [ 'svelte', /^svelte\//, 'esm-env', '@sveltejs/kit' ], vite:config optimizeDeps: { noDiscovery: true, esbuildOptions: [Object] } vite:config }, vite:config build: { vite:config target: 'node18.13', vite:config cssTarget: 'node18.13', vite:config outDir: '/Users/timo/sveltekit-askar-bug/.svelte-kit/output/server', vite:config assetsDir: 'assets', vite:config assetsInlineLimit: 4096, vite:config cssCodeSplit: true, vite:config sourcemap: false, vite:config rollupOptions: { vite:config input: [Object], vite:config output: [Object], vite:config preserveEntrySignatures: 'strict' vite:config }, vite:config minify: false, vite:config terserOptions: {}, vite:config write: true, vite:config emptyOutDir: null, vite:config copyPublicDir: false, vite:config manifest: '.vite/manifest.json', vite:config lib: false, vite:config ssr: true, vite:config ssrManifest: false, vite:config ssrEmitAssets: true, vite:config reportCompressedSize: true, vite:config chunkSizeWarningLimit: 500, vite:config watch: null, vite:config cssMinify: true, vite:config commonjsOptions: { include: [Array], extensions: [Array] }, vite:config dynamicImportVarsOptions: { warnOnError: true, exclude: [Array] }, vite:config modulePreload: { polyfill: true } vite:config }, vite:config resolve: { vite:config mainFields: [ 'svelte', 'browser', 'module', 'jsnext:main', 'jsnext' ], vite:config conditions: [ 'svelte' ], vite:config extensions: [ vite:config '.mjs', '.js', vite:config '.mts', '.ts', vite:config '.jsx', '.tsx', vite:config '.json' vite:config ], vite:config dedupe: [ vite:config 'svelte/animate', vite:config 'svelte/easing', vite:config 'svelte/internal', vite:config 'svelte/internal/disclose-version', vite:config 'svelte/motion', vite:config 'svelte/ssr', vite:config 'svelte/store', vite:config 'svelte/transition', vite:config 'svelte', vite:config 'svelte-hmr/runtime/hot-api-esm.js', vite:config 'svelte-hmr/runtime/proxy-adapter-dom.js', vite:config 'svelte-hmr' vite:config ], vite:config preserveSymlinks: false, vite:config alias: [ [Object], [Object], [Object], [Object], [Object] ] vite:config }, vite:config optimizeDeps: { vite:config holdUntilCrawlEnd: true, vite:config include: [ vite:config 'svelte/animate', vite:config 'svelte/easing', vite:config 'svelte/internal', vite:config 'svelte/internal/disclose-version', vite:config 'svelte/motion', vite:config 'svelte/store', vite:config 'svelte/transition', vite:config 'svelte' vite:config ], vite:config exclude: [ 'svelte-hmr', '@sveltejs/kit', '$app', '$env' ], vite:config entries: [ vite:config '/Users/timo/sveltekit-askar-bug/src/routes/**/+*.{svelte,js,ts}', vite:config '!/Users/timo/sveltekit-askar-bug/src/routes/**/+*server.*' vite:config ], vite:config esbuildOptions: { preserveSymlinks: false } vite:config }, vite:config experimental: { importGlobRestoreExtension: false, hmrPartialAccept: true }, vite:config root: '/Users/timo/sveltekit-askar-bug', vite:config server: { vite:config preTransformRequests: true, vite:config cors: { preflightContinue: true }, vite:config fs: { vite:config strict: true, vite:config allow: [Array], vite:config deny: [Array], vite:config cachedChecks: undefined vite:config }, vite:config sourcemapIgnoreList: [Function: sourcemapIgnoreList], vite:config watch: { ignored: [Array] }, vite:config middlewareMode: false vite:config }, vite:config preview: { vite:config port: undefined, vite:config strictPort: undefined, vite:config host: undefined, vite:config https: undefined, vite:config open: undefined, vite:config proxy: undefined, vite:config cors: { preflightContinue: true }, vite:config headers: undefined vite:config }, vite:config define: { vite:config __SVELTEKIT_ADAPTER_NAME__: '"@sveltejs/adapter-auto"', vite:config __SVELTEKIT_APP_VERSION_FILE__: '"_app/version.json"', vite:config __SVELTEKIT_APP_VERSION_POLL_INTERVAL__: '0', vite:config __SVELTEKIT_DEV__: 'false', vite:config __SVELTEKIT_EMBEDDED__: 'false' vite:config }, vite:config base: '/', vite:config publicDir: '/Users/timo/sveltekit-askar-bug/static', vite:config worker: { vite:config format: 'iife', vite:config plugins: '() => plugins', vite:config rollupOptions: { output: [Object] } vite:config }, vite:config configFile: '/Users/timo/sveltekit-askar-bug/vite.config.ts', vite:config configFileDependencies: [ '/Users/timo/sveltekit-askar-bug/vite.config.ts' ], vite:config inlineConfig: { vite:config root: undefined, vite:config base: undefined, vite:config mode: undefined, vite:config configFile: undefined, vite:config logLevel: undefined, vite:config clearScreen: undefined, vite:config build: {} vite:config }, vite:config rawBase: '/', vite:config cacheDir: '/Users/timo/sveltekit-askar-bug/node_modules/.vite', vite:config command: 'build', vite:config mode: 'production', vite:config isWorker: false, vite:config mainConfig: null, vite:config bundleChain: [], vite:config isProduction: true, vite:config css: { lightningcss: undefined }, vite:config esbuild: { jsxDev: false }, vite:config envDir: '/Users/timo/sveltekit-askar-bug', vite:config env: { BASE_URL: '/', MODE: 'production', DEV: false, PROD: true }, vite:config assetsInclude: [Function: assetsInclude], vite:config logger: { vite:config hasWarned: false, vite:config info: [Function: info], vite:config warn: [Function: warn], vite:config warnOnce: [Function: warnOnce], vite:config error: [Function: error], vite:config clearScreen: [Function: clearScreen], vite:config hasErrorLogged: [Function: hasErrorLogged] vite:config }, vite:config packageCache: Map(1) { vite:config 'fnpd_/Users/timo/sveltekit-askar-bug' => { vite:config dir: '/Users/timo/sveltekit-askar-bug', vite:config data: [Object], vite:config hasSideEffects: [Function: hasSideEffects], vite:config webResolvedImports: {}, vite:config nodeResolvedImports: {}, vite:config setResolvedCache: [Function: setResolvedCache], vite:config getResolvedCache: [Function: getResolvedCache] vite:config }, vite:config set: [Function (anonymous)] vite:config }, vite:config createResolver: [Function: createResolver], vite:config appType: 'spa', vite:config getSortedPlugins: [Function: getSortedPlugins], vite:config getSortedPluginHooks: [Function: getSortedPluginHooks] vite:config } +58ms vite v5.3.1 building SSR bundle for production... ✓ 91 modules transformed. vite:config bundled config file loaded in 4.03ms +652ms vite:config using resolved config: { vite:config plugins: [ vite:config 'vite:build-metadata', vite:config 'vite:watch-package-data', vite:config 'vite:pre-alias', vite:config 'alias', vite:config 'vite-plugin-svelte', vite:config 'vite:modulepreload-polyfill', vite:config 'vite:resolve', vite:config 'vite:html-inline-proxy', vite:config 'vite:css', vite:config 'vite:esbuild', vite:config 'vite:json', vite:config 'vite:wasm-helper', vite:config 'vite:worker', vite:config 'vite:asset', vite:config 'vite-plugin-sveltekit-setup', vite:config 'vite-plugin-sveltekit-virtual-modules', vite:config 'vite-plugin-sveltekit-guard', vite:config 'vite-plugin-sveltekit-compile', vite:config 'vite:wasm-fallback', vite:config 'vite:define', vite:config 'vite:css-post', vite:config 'vite:build-html', vite:config 'vite:worker-import-meta-url', vite:config 'vite:asset-import-meta-url', vite:config 'vite:force-systemjs-wrap-complete', vite:config 'commonjs', vite:config 'vite:data-uri', vite:config 'vite:dynamic-import-vars', vite:config 'vite:import-glob', vite:config 'vite:build-import-analysis', vite:config 'vite:esbuild-transpile', vite:config 'vite:terser', vite:config 'vite:manifest', vite:config 'vite:reporter', vite:config 'vite:load-fallback' vite:config ], vite:config ssr: { vite:config target: 'node', vite:config external: [ '@hyperledger/aries-askar-nodejs' ], vite:config noExternal: [ 'svelte', /^svelte\//, 'esm-env', '@sveltejs/kit' ], vite:config optimizeDeps: { noDiscovery: true, esbuildOptions: [Object] } vite:config }, vite:config configFile: '/Users/timo/sveltekit-askar-bug/vite.config.ts', vite:config mode: 'production', vite:config build: { vite:config target: [ 'es2020', 'edge88', 'firefox78', 'chrome87', 'safari14' ], vite:config cssTarget: [ 'es2020', 'edge88', 'firefox78', 'chrome87', 'safari14' ], vite:config outDir: '/Users/timo/sveltekit-askar-bug/.svelte-kit/output/client', vite:config assetsDir: 'assets', vite:config assetsInlineLimit: 4096, vite:config cssCodeSplit: true, vite:config sourcemap: false, vite:config rollupOptions: { vite:config input: [Object], vite:config output: [Object], vite:config preserveEntrySignatures: 'strict' vite:config }, vite:config minify: 'esbuild', vite:config terserOptions: {}, vite:config write: true, vite:config emptyOutDir: null, vite:config copyPublicDir: true, vite:config manifest: '.vite/manifest.json', vite:config lib: false, vite:config ssr: false, vite:config ssrManifest: false, vite:config ssrEmitAssets: true, vite:config reportCompressedSize: true, vite:config chunkSizeWarningLimit: 500, vite:config watch: null, vite:config cssMinify: true, vite:config commonjsOptions: { include: [Array], extensions: [Array] }, vite:config dynamicImportVarsOptions: { warnOnError: true, exclude: [Array] }, vite:config modulePreload: { polyfill: true } vite:config }, vite:config optimizeDeps: { vite:config holdUntilCrawlEnd: true, vite:config force: undefined, vite:config include: [ vite:config 'svelte/animate', vite:config 'svelte/easing', vite:config 'svelte/internal', vite:config 'svelte/internal/disclose-version', vite:config 'svelte/motion', vite:config 'svelte/store', vite:config 'svelte/transition', vite:config 'svelte' vite:config ], vite:config exclude: [ 'svelte-hmr', '@sveltejs/kit', '$app', '$env' ], vite:config entries: [ vite:config '/Users/timo/sveltekit-askar-bug/src/routes/**/+*.{svelte,js,ts}', vite:config '!/Users/timo/sveltekit-askar-bug/src/routes/**/+*server.*' vite:config ], vite:config esbuildOptions: { preserveSymlinks: false } vite:config }, vite:config resolve: { vite:config mainFields: [ 'svelte', 'browser', 'module', 'jsnext:main', 'jsnext' ], vite:config conditions: [ 'svelte' ], vite:config extensions: [ vite:config '.mjs', '.js', vite:config '.mts', '.ts', vite:config '.jsx', '.tsx', vite:config '.json' vite:config ], vite:config dedupe: [ vite:config 'svelte/animate', vite:config 'svelte/easing', vite:config 'svelte/internal', vite:config 'svelte/internal/disclose-version', vite:config 'svelte/motion', vite:config 'svelte/ssr', vite:config 'svelte/store', vite:config 'svelte/transition', vite:config 'svelte', vite:config 'svelte-hmr/runtime/hot-api-esm.js', vite:config 'svelte-hmr/runtime/proxy-adapter-dom.js', vite:config 'svelte-hmr' vite:config ], vite:config preserveSymlinks: false, vite:config alias: [ [Object], [Object], [Object], [Object], [Object] ] vite:config }, vite:config experimental: { importGlobRestoreExtension: false, hmrPartialAccept: true }, vite:config root: '/Users/timo/sveltekit-askar-bug', vite:config server: { vite:config preTransformRequests: true, vite:config cors: { preflightContinue: true }, vite:config fs: { vite:config strict: true, vite:config allow: [Array], vite:config deny: [Array], vite:config cachedChecks: undefined vite:config }, vite:config sourcemapIgnoreList: [Function: sourcemapIgnoreList], vite:config watch: { ignored: [Array] }, vite:config middlewareMode: false vite:config }, vite:config preview: { vite:config port: undefined, vite:config strictPort: undefined, vite:config host: undefined, vite:config https: undefined, vite:config open: undefined, vite:config proxy: undefined, vite:config cors: { preflightContinue: true }, vite:config headers: undefined vite:config }, vite:config define: { vite:config __SVELTEKIT_ADAPTER_NAME__: '"@sveltejs/adapter-auto"', vite:config __SVELTEKIT_APP_VERSION_FILE__: '"_app/version.json"', vite:config __SVELTEKIT_APP_VERSION_POLL_INTERVAL__: '0', vite:config __SVELTEKIT_DEV__: 'false', vite:config __SVELTEKIT_EMBEDDED__: 'false' vite:config }, vite:config base: './', vite:config publicDir: '/Users/timo/sveltekit-askar-bug/static', vite:config worker: { vite:config format: 'iife', vite:config plugins: '() => plugins', vite:config rollupOptions: { output: [Object] } vite:config }, vite:config configFileDependencies: [ '/Users/timo/sveltekit-askar-bug/vite.config.ts' ], vite:config inlineConfig: { vite:config configFile: '/Users/timo/sveltekit-askar-bug/vite.config.ts', vite:config mode: 'production', vite:config logLevel: undefined, vite:config clearScreen: undefined, vite:config build: { minify: undefined, assetsInlineLimit: 4096, sourcemap: false }, vite:config optimizeDeps: { force: undefined } vite:config }, vite:config rawBase: './', vite:config cacheDir: '/Users/timo/sveltekit-askar-bug/node_modules/.vite', vite:config command: 'build', vite:config isWorker: false, vite:config mainConfig: null, vite:config bundleChain: [], vite:config isProduction: true, vite:config css: { lightningcss: undefined }, vite:config esbuild: { jsxDev: false }, vite:config envDir: '/Users/timo/sveltekit-askar-bug', vite:config env: { BASE_URL: './', MODE: 'production', DEV: false, PROD: true }, vite:config assetsInclude: [Function: assetsInclude], vite:config logger: { vite:config hasWarned: false, vite:config info: [Function: info], vite:config warn: [Function: warn], vite:config warnOnce: [Function: warnOnce], vite:config error: [Function: error], vite:config clearScreen: [Function: clearScreen], vite:config hasErrorLogged: [Function: hasErrorLogged] vite:config }, vite:config packageCache: Map(1) { vite:config 'fnpd_/Users/timo/sveltekit-askar-bug' => { vite:config dir: '/Users/timo/sveltekit-askar-bug', vite:config data: [Object], vite:config hasSideEffects: [Function: hasSideEffects], vite:config webResolvedImports: {}, vite:config nodeResolvedImports: {}, vite:config setResolvedCache: [Function: setResolvedCache], vite:config getResolvedCache: [Function: getResolvedCache] vite:config }, vite:config set: [Function (anonymous)] vite:config }, vite:config createResolver: [Function: createResolver], vite:config appType: 'spa', vite:config getSortedPlugins: [Function: getSortedPlugins], vite:config getSortedPluginHooks: [Function: getSortedPluginHooks] vite:config } +4ms vite v5.3.1 building for production... ✓ 61 modules transformed. .svelte-kit/output/client/_app/version.json 0.03 kB │ gzip: 0.05 kB .svelte-kit/output/client/.vite/manifest.json 2.51 kB │ gzip: 0.50 kB .svelte-kit/output/client/_app/immutable/entry/start.B_g6I2LP.js 0.07 kB │ gzip: 0.08 kB .svelte-kit/output/client/_app/immutable/nodes/0.V07vbrzA.js 0.60 kB │ gzip: 0.39 kB .svelte-kit/output/client/_app/immutable/nodes/2.DYBzjjm4.js 0.69 kB │ gzip: 0.45 kB .svelte-kit/output/client/_app/immutable/nodes/1.CGDxFk9d.js 1.02 kB │ gzip: 0.60 kB .svelte-kit/output/client/_app/immutable/chunks/scheduler.BvLojk_z.js 2.16 kB │ gzip: 1.02 kB .svelte-kit/output/client/_app/immutable/chunks/index.DFTQtrJW.js 5.43 kB │ gzip: 2.30 kB .svelte-kit/output/client/_app/immutable/entry/app.1jM0tJAr.js 6.02 kB │ gzip: 2.44 kB .svelte-kit/output/client/_app/immutable/chunks/entry.CMABNftM.js 27.42 kB │ gzip: 10.83 kB ✓ built in 237ms .svelte-kit/output/server/.vite/manifest.json 2.59 kB .svelte-kit/output/server/entries/pages/_page.server.ts.js 0.16 kB .svelte-kit/output/server/entries/fallbacks/layout.svelte.js 0.24 kB .svelte-kit/output/server/internal.js 0.31 kB .svelte-kit/output/server/entries/pages/_page.svelte.js 0.37 kB .svelte-kit/output/server/entries/fallbacks/error.svelte.js 1.16 kB .svelte-kit/output/server/chunks/ssr.js 3.34 kB .svelte-kit/output/server/chunks/exports.js 5.94 kB .svelte-kit/output/server/chunks/internal.js 6.00 kB .svelte-kit/output/server/index.js 115.01 kB ✓ built in 1.18s Run npm run preview to preview your production build locally. > Using @sveltejs/adapter-auto Could not detect a supported production environment. See https://kit.svelte.dev/docs/adapters to learn how to configure your app to run on the platform of your choosing ✔ done [1] 80346 segmentation fault pnpm build --debug ```Validations