qwik icon indicating copy to clipboard operation
qwik copied to clipboard

[🐞] Cannot use node.js module inside Endpoint because of rollup compilation error

Open jappyjan opened this issue 11 months ago • 5 comments

Which component is affected?

Qwik Rollup / Vite plugin

Describe the bug

When i import the Resvg module into my Endpoint, I get the error

vite v5.1.4 building SSR bundle for production...
✓ 24 modules transformed.
x Build failed in 1.55s
error during build:
RollupError: [commonjs--resolver] Cannot bundle Node.js built-in "fs" imported from "src/routes/api/open-graph/generate-og-image.ts". Consider disabling ssr.noExternal or remove the built-in dependency.
    at getRollupEror (file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/parseAst.js:375:41)
    at error (file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/parseAst.js:372:42)
    at Object.error (file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/node-entry.js:19394:20)
    at Object.resolveId (file:///Users/jappy/code/fpv-drone.info/node_modules/vite/dist/node/chunks/dep-jDlpJiMN.js:47584:34)
    at Object.handler (file:///Users/jappy/code/fpv-drone.info/node_modules/vite/dist/node/chunks/dep-jDlpJiMN.js:67142:19)
    at file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/node-entry.js:19579:40
    at async PluginDriver.hookFirstAndGetPlugin (file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/node-entry.js:19479:28)
    at async resolveId (file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/node-entry.js:18149:26)
    at async ModuleLoader.resolveId (file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/node-entry.js:18563:15)
    at async Object.resolveId (file:///Users/jappy/code/fpv-drone.info/node_modules/vite/dist/node/chunks/dep-jDlpJiMN.js:8171:10)

undefined

therefore i added all necessary native node modules like fs, path, etc. to the ssr.external options of rollup which fixed these errors, but now i get this error:

vite v5.1.4 building SSR bundle for production...
✓ 56 modules transformed.
x Build failed in 1.85s
error during build:
RollupError: Unexpected character '�'
    at getRollupEror (file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/parseAst.js:375:41)
    at ParseError.initialise (file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/node-entry.js:11155:28)
    at convertNode (file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/node-entry.js:12895:10)
    at convertProgram (file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/node-entry.js:12215:12)
    at Module.setSource (file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/node-entry.js:14039:24)
    at async ModuleLoader.addModuleSource (file:///Users/jappy/code/fpv-drone.info/node_modules/rollup/dist/es/shared/node-entry.js:18697:13)

undefined

this is my vite.config.ts

import { UserConfig, defineConfig } from "vite";
import { qwikVite } from "@builder.io/qwik/optimizer";
import { qwikCity } from "@builder.io/qwik-city/vite";
import { builderDevTools } from "@builder.io/dev-tools/vite";
import tsconfigPaths from "vite-tsconfig-paths";
import { qwikReact } from '@builder.io/qwik-react/vite';

export default defineConfig(() => {
  return {
    plugins: [builderDevTools(), qwikCity(), qwikVite(), tsconfigPaths(), qwikReact()],
    optimizeDeps: {
      exclude: ['@uav.painkillers/pid-analyzer-wasm']
    },
// this part is what i added to make rollup compile with the resvg module (unsuccessfully)
    ssr: {
      external: ['fs', 'path', 'child_process'],
    },
  } as UserConfig;
});

and this is the minimal endpoint definition that triggers the error:

import { type RequestHandler } from "@builder.io/qwik-city";
import { Resvg } from "@resvg/resvg-js";

export const onGet: RequestHandler = async (requestEvent) => {
   console.log('resvg', Resvg);
};

Reproduction

.

Steps to reproduce

No response

System Info

System:
    OS: macOS 14.2.1
    CPU: (12) arm64 Apple M3 Pro
    Memory: 1.56 GB / 18.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 20.10.0 - ~/.nvm/versions/node/v20.10.0/bin/node
    Yarn: 1.22.21 - ~/.nvm/versions/node/v20.10.0/bin/yarn
    npm: 10.2.3 - ~/.nvm/versions/node/v20.10.0/bin/npm
  Browsers:
    Brave Browser: 122.1.63.174
    Chrome: 123.0.6312.58
    Safari: 17.2.1
  npmPackages:
    @builder.io/dev-tools: ^0.2.19 => 0.2.19 
    @builder.io/qwik: ^1.4.5 => 1.4.5 
    @builder.io/qwik-city: ^1.4.5 => 1.4.5 
    @builder.io/qwik-react: ^0.5.4 => 0.5.4 
    @builder.io/qwik-worker: ^0.0.1 => 0.0.1 
    @builder.io/sdk-qwik: ^0.14.4 => 0.14.4 
    undici: * => 6.6.2 
    vite: ^5.1.4 => 5.1.4

Additional Information

No response

jappyjan avatar Mar 23 '24 16:03 jappyjan