pluvial / svelte-adapter-deno

A SvelteKit adapter for Deno
https://svelte-adapter-deno.deno.dev/
MIT License
325 stars 13 forks source link

No loader is configured.... #34

Closed vorcigernix closed 1 year ago

vorcigernix commented 1 year ago

I am trying to switch from Netlify to Deno Deploy and I am running into this issue:

✘ [ERROR] No loader is configured for ".node" files: node_modules/three-em-0-3-16/three_em_node.win32-x64-msvc.node

which seems to be related to some deno/node incompatibility. Three_em fortunately do have a deno version of their library, but I don't know how to substitute it. I tried adding an import map

{
  "imports": {
    "three_em": "https://deno.land/x/three_em@0.3.0/index.js"
  }
}

to no avail.

jpaquim commented 1 year ago

@vorcigernix thank you for opening the issue, you can maybe try using a custom deps.ts and see if it helps... What error are you getting from using the import map?

Libraries that use .node (native library) files can be tricky to get working correctly, as they typically contain platform-specific code. In your case it seems like a Windows-specific version of the library is being included, is that intended? Deno Deploy only uses Linux-based machines/containers if I'm not mistaken.

vorcigernix commented 1 year ago

@jpaquim Thanks, will try the deps file. I think it completely ignores the import map during the npm build.

And sorry, I haven't included all the errors for brevity, it clearly tries to use all binaries (windows, mac, linux). Full error output is

✘ [ERROR] No loader is configured for ".node" files: node_modules/three-em-0-3-16/three_em_node.linux-x64-gnu.node

    node_modules/three-em-0-3-16/index.js:172:38:
      172 │ ...     nativeBinding = require('./three_em_node.linux-x64-gnu.node')
          ╵                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error during build:
Error: Build failed with 5 errors:
node_modules/three-em-0-3-16/index.js:1:45: ERROR: Could not resolve "fs"
node_modules/three-em-0-3-16/index.js:2:25: ERROR: Could not resolve "path"
node_modules/three-em-0-3-16/index.js:63:36: ERROR: No loader is configured for ".node" files: node_modules/three-em-0-3-16/three_em_node.win32-x64-msvc.node
node_modules/three-em-0-3-16/index.js:109:36: ERROR: No loader is configured for ".node" files: node_modules/three-em-0-3-16/three_em_node.darwin-x64.node
node_modules/three-em-0-3-16/index.js:172:38: ERROR: No loader is configured for ".node" files: node_modules/three-em-0-3-16/three_em_node.linux-x64-gnu.node
    at failureErrorWithLog (/home/vorcigernix/develop/jdu2/node_modules/esbuild/lib/main.js:1596:15)
    at /home/vorcigernix/develop/jdu2/node_modules/esbuild/lib/main.js:1052:28
    at /home/vorcigernix/develop/jdu2/node_modules/esbuild/lib/main.js:997:67
    at buildResponseToResult (/home/vorcigernix/develop/jdu2/node_modules/esbuild/lib/main.js:1050:7)
    at /home/vorcigernix/develop/jdu2/node_modules/esbuild/lib/main.js:1162:14
    at responseCallbacks.<computed> (/home/vorcigernix/develop/jdu2/node_modules/esbuild/lib/main.js:697:9)
    at handleIncomingPacket (/home/vorcigernix/develop/jdu2/node_modules/esbuild/lib/main.js:752:9)
    at Socket.readFromStdout (/home/vorcigernix/develop/jdu2/node_modules/esbuild/lib/main.js:673:7)
    at Socket.emit (node:events:513:28)
    at addChunk (node:internal/streams/readable:315:12)
vorcigernix commented 1 year ago

It is probably not going to work. NPM build is not aware of deno substitutes (in either file), so it fails to build.

jpaquim commented 1 year ago

@vorcigernix If you're getting errors in the imports during the build, maybe you can try marking it as an external package in the vite/rollup build config: https://rollupjs.org/guide/en/#external

Then it shouldn't touch the import, leaving it up to the runtime (Deno in this case) to resolve it.