withastro/adapters

Build Breaking Astro 4.0

Closed this issue · 5 comments

  • update astro to 4.0
  • run pnpm run build
❯ pnpm --filter @astrojs/cloudflare run build

> @astrojs/cloudflare@7.7.1 build /Users/alexanderniebuhr/Developer/Projects/withastro_adapters/packages/cloudflare
> tsc

src/index.ts:98:8 - error TS2322: Type 'Plugin_2' is not assignable to type 'PluginOption'.
  Type 'Plugin_2' is not assignable to type 'Plugin<any>'.
    Types of property 'apply' are incompatible.
      Type '"build" | "serve" | ((this: void, config: import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@4.5.0_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).UserConfig, env: import("/Users/alexanderniebuhr/Developer/Projects/withas...' is not assignable to type '"build" | "serve" | ((this: void, config: import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@5.0.3_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).UserConfig, env: import("/Users/alexanderniebuhr/Developer/Projects/withas...'.
        Type '(this: void, config: UserConfig, env: ConfigEnv) => boolean' is not assignable to type '"build" | "serve" | ((this: void, config: UserConfig, env: ConfigEnv) => boolean) | undefined'.
          Type '(this: void, config: import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@4.5.0_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).UserConfig, env: import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_mod...' is not assignable to type '(this: void, config: import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@5.0.3_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).UserConfig, env: import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_mod...'.
            Types of parameters 'config' and 'config' are incompatible.
              Type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@5.0.3_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).UserConfig' is not assignable to type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@4.5.0_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).UserConfig'.
                Types of property 'plugins' are incompatible.
                  Type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@5.0.3_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).PluginOption[] | undefined' is not assignable to type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@4.5.0_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).PluginOption[] | undefined'.
                    Type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@5.0.3_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).PluginOption[]' is not assignable to type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@4.5.0_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).PluginOption[]'.
                      Type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@5.0.3_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).PluginOption' is not assignable to type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@4.5.0_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).PluginOption'.
                        Type 'Plugin<any>' is not assignable to type 'PluginOption'.
                          Type 'Plugin<any>' is not assignable to type 'Plugin_2'.
                            Types of property 'apply' are incompatible.
                              Type '"build" | "serve" | ((this: void, config: import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@5.0.3_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).UserConfig, env: import("/Users/alexanderniebuhr/Developer/Projects/withas...' is not assignable to type '"build" | "serve" | ((this: void, config: import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@4.5.0_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).UserConfig, env: import("/Users/alexanderniebuhr/Developer/Projects/withas...'.
                                Type '(this: void, config: UserConfig, env: ConfigEnv) => boolean' is not assignable to type '"build" | "serve" | ((this: void, config: UserConfig, env: ConfigEnv) => boolean) | undefined'.
                                  Type '(this: void, config: import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@5.0.3_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).UserConfig, env: import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_mod...' is not assignable to type '(this: void, config: import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@4.5.0_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).UserConfig, env: import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_mod...'.
                                    Types of parameters 'config' and 'config' are incompatible.
                                      Type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@4.5.0_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).UserConfig' is not assignable to type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@5.0.3_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).UserConfig'.
                                        Types of property 'plugins' are incompatible.
                                          Type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@4.5.0_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).PluginOption[] | undefined' is not assignable to type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@5.0.3_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).PluginOption[] | undefined'.
                                            Type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@4.5.0_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).PluginOption[]' is not assignable to type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@5.0.3_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).PluginOption[]'.
                                              Type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@4.5.0_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).PluginOption' is not assignable to type 'import("/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/node_modules/.pnpm/vite@5.0.3_@types+node@18.17.8/node_modules/vite/dist/node/index", { assert: { "resolution-mode": "import" } }).PluginOption'.
                                                Type 'PluginOption[]' is not assignable to type 'PluginOption'.

 98        wasmModuleLoader({
           ~~~~~~~~~~~~~~~~~~
 99         disabled: !args?.wasmModuleImports,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
100         assetsDirectory: config.build.assets,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
101        }),
    ~~~~~~~~~


Found 1 error in src/index.ts:98

/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/packages/cloudflare:
 ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @astrojs/cloudflare@7.7.1 build: `tsc`
Exit status 2

From what I gathered updating vite to 5 fixes the building part. But then wasm tests fails

I'm lacking development context, I just jumped in

Wasm tests log output (WARNING: Long)
PS ..\cloudflare> pnpm test:wasm

> @astrojs/cloudflare@7.7.1 test:wasm C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare
> mocha --exit --timeout 30000 'test/wasm*'



  WasmDirectoryImport
[stderr] X [ERROR] 1 error(s) and 0 warning(s) when compiling Worker.



[stderr] X [ERROR] ENOENT: no such file or directory, open 'C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare\test\fixtures\wasm-directory\dist\_astro\__WASM_ASSET__4lXqE0R3.wasm' [plugin wrangler-module-collector]

    [[path]].js:49:21221:
      49 │ ...rt Ir from"../dist/_astro/__WASM_ASSET__4lXqE0R3.wasm";async fu...
         ╵              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  This error came from the "onResolve" callback registered here:

    ../../../../../../node_modules/.pnpm/wrangler@3.15.0/node_modules/wrangler/wrangler-dist/cli.js:121934:19:
      121934 │             build5.onResolve(
             ╵                    ~~~~~~~~~

    at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\wrangler@3.15.0\node_modules\wrangler\wrangler-dist\cli.js:121934:20
    at Array.forEach (<anonymous>)
    at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\wrangler@3.15.0\node_modules\wrangler\wrangler-dist\cli.js:121933:22
    at Array.forEach (<anonymous>)
    at setup (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\wrangler@3.15.0\node_modules\wrangler\wrangler-dist\cli.js:121929:28)
    at handlePlugins (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:1279:21)
    at buildOrContextImpl (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:968:5)
    at Object.buildOrContext (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:776:5)
    at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:2163:15



[stderr] X [ERROR] Build failed with 1 error:

  [[path]].js:49:21221: ERROR: [plugin: wrangler-module-collector] ENOENT: no such file or directory, open 'C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare\test\fixtures\wasm-directory\dist\_astro\__WASM_ASSET__4lXqE0R3.wasm'



PS ..\cloudflare> pnpm test:wasm

> @astrojs/cloudflare@7.7.1 test:wasm C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare
> mocha --exit --timeout 30000 'test/wasm*'



  WasmDirectoryImport
[stderr] X [ERROR] 1 error(s) and 0 warning(s) when compiling Worker.



[stderr] X [ERROR] ENOENT: no such file or directory, open 'C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare\test\fixtures\wasm-directory\dist\_astro\__WASM_ASSET__4lXqE0R3.wasm' [plugin wrangler-module-collector]

    [[path]].js:49:21221:
      49 │ ...rt Ir from"../dist/_astro/__WASM_ASSET__4lXqE0R3.wasm";async fu...
         ╵              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  This error came from the "onResolve" callback registered here:

    ../../../../../../node_modules/.pnpm/wrangler@3.15.0/node_modules/wrangler/wrangler-dist/cli.js:121934:19:
      121934 │             build5.onResolve(
             ╵                    ~~~~~~~~~

    at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\wrangler@3.15.0\node_modules\wrangler\wrangler-dist\cli.js:121934:20
    at Array.forEach (<anonymous>)
    at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\wrangler@3.15.0\node_modules\wrangler\wrangler-dist\cli.js:121933:22
    at Array.forEach (<anonymous>)
    at setup (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\wrangler@3.15.0\node_modules\wrangler\wrangler-dist\cli.js:121929:28)
    at handlePlugins (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:1279:21)
    at buildOrContextImpl (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:968:5)
    at Object.buildOrContext (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:776:5)
    at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:2163:15



[stderr] X [ERROR] Build failed with 1 error:

  [[path]].js:49:21221: ERROR: [plugin: wrangler-module-collector] ENOENT: no such file or directory, open 'C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare\test\fixtures\wasm-directory\dist\_astro\__WASM_ASSET__4lXqE0R3.wasm'



    1) "before all" hook for "can render"
CLEANED

  WasmFunctionPerRouteImport
[stderr] X [ERROR] 2 error(s) and 0 warning(s) when compiling Worker.



[stderr] X [ERROR] ENOENT: no such file or directory, open 'C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare\test\fixtures\wasm-function-per-route\dist\_astro\__WASM_ASSET__4lXqE0R3.wasm' [plugin wrangler-module-collector]

    deeply/nested/route.js:16:23:
      16 │ ...asmModule from "../../../dist/_astro/__WASM_ASSET__4lXqE0R3.wasm";
         ╵                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  This error came from the "onResolve" callback registered here:

    ../../../../../../node_modules/.pnpm/wrangler@3.15.0/node_modules/wrangler/wrangler-dist/cli.js:121934:19:
      121934 │             build5.onResolve(
             ╵                    ~~~~~~~~~

    at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\wrangler@3.15.0\node_modules\wrangler\wrangler-dist\cli.js:121934:20
    at Array.forEach (<anonymous>)
    at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\wrangler@3.15.0\node_modules\wrangler\wrangler-dist\cli.js:121933:22
    at Array.forEach (<anonymous>)
    at setup (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\wrangler@3.15.0\node_modules\wrangler\wrangler-dist\cli.js:121929:28)
    at handlePlugins (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:1279:21)
    at buildOrContextImpl (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:968:5)
    at Object.buildOrContext (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:776:5)
    at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:2163:15



[stderr] X [ERROR] ENOENT: no such file or directory, open 'C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare\test\fixtures\wasm-function-per-route\dist\_astro\__WASM_ASSET__4lXqE0R3.wasm' [plugin wrangler-module-collector]

    index.js:21:23:
      21 │ import wasmModule from "../dist/_astro/__WASM_ASSET__4lXqE0R3.wasm";
         ╵                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  This error came from the "onResolve" callback registered here:

    ../../../../../../node_modules/.pnpm/wrangler@3.15.0/node_modules/wrangler/wrangler-dist/cli.js:121934:19:
      121934 │             build5.onResolve(
             ╵                    ~~~~~~~~~

    at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\wrangler@3.15.0\node_modules\wrangler\wrangler-dist\cli.js:121934:20
    at Array.forEach (<anonymous>)
    at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\wrangler@3.15.0\node_modules\wrangler\wrangler-dist\cli.js:121933:22
    at Array.forEach (<anonymous>)
    at setup (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\wrangler@3.15.0\node_modules\wrangler\wrangler-dist\cli.js:121929:28)
    at handlePlugins (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:1279:21)
    at buildOrContextImpl (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:968:5)
    at Object.buildOrContext (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:776:5)
    at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:2163:15


X [ERROR] Build failed with 2 errors:

  deeply/nested/route.js:16:23: ERROR: [plugin: wrangler-module-collector] ENOENT: no such file or directory, open 'C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare\test\fixtures\wasm-function-per-route\dist\_astro\__WASM_ASSET__4lXqE0R3.wasm'
  index.js:21:23: ERROR: [plugin: wrangler-module-collector] ENOENT: no such file or directory, open 'C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare\test\fixtures\wasm-function-per-route\dist\_astro\__WASM_ASSET__4lXqE0R3.wasm'



    2) "before all" hook for "can render"
CLEANED

  WasmImport
[stderr] X [ERROR] 1 error(s) and 0 warning(s) when compiling Worker.



[stderr] ▲ [WARNING] Failed to bundle _worker.js. Error: Build failed with 1 error:

  _worker.js:49:21205: ERROR: [plugin: wrangler-module-collector] ENOENT: no such file or directory, open 'C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare\test\fixtures\wasm\dist\_astro\__WASM_ASSET__4lXqE0R3.wasm'
      at failureErrorWithLog (C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:1636:15)
      at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:1048:25
      at C:\Users\Vit\Documents\GitHub\astro-adapters\node_modules\.pnpm\esbuild@0.17.19\node_modules\esbuild\lib\main.js:1512:9
      at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
    errors: [
      {
        detail: [Error],
        id: '',
        location: [Object],
        notes: [Array],
        pluginName: 'wrangler-module-collector',
        text: "ENOENT: no such file or directory, open 'C:\\Users\\Vit\\Documents\\GitHub\\astro-adapters\\packages\\cloudflare\\test\\fixtures\\wasm\\dist\\_astro\\__WASM_ASSET__4lXqE0R3.wasm'"
      }
    ],
    warnings: []
  }



    3) "before all" hook for "can render"
CLEANED


  0 passing (2m)
  3 failing

  1) WasmDirectoryImport
       "before all" hook for "can render":
     Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare\test\wasm-directory.test.js)
      at listOnTimeout (node:internal/timers:573:17)
      at process.processTimers (node:internal/timers:514:7)

  2) WasmFunctionPerRouteImport
       "before all" hook for "can render":
     Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare\test\wasm-function-per-route.test.js)
      at listOnTimeout (node:internal/timers:573:17)
      at process.processTimers (node:internal/timers:514:7)

  3) WasmImport
       "before all" hook for "can render":
     Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (C:\Users\Vit\Documents\GitHub\astro-adapters\packages\cloudflare\test\wasm.test.js)
      at listOnTimeout (node:internal/timers:573:17)
      at process.processTimers (node:internal/timers:514:7)



 ELIFECYCLE  Command failed with exit code 3.

fixed by 2a2db25
Thanks @lilnasy ❤️

@alexanderniebuhr Wasm loading still fails though right?

Tests are successful, but they are not yet updated to Astro 4. So you might be right, I'll add a PR with tests updated to 4.0, so we can check.

This is the branch with my attempt to fix it from yesterday: https://github.com/withastro/adapters/tree/wasm-replace-fix
Based on the last cut release so it can be released as a patch to v7.