Open runspired opened 1 year ago
AFAIK there's no reason to use Fastboot.require
anymore, because ember-auto-import and embroider both allow you to import dependencies and keep those working in both browser and fastboot.
It was only needed in the era when apps didn't normally import NPM dependencies. It makes no sense as an API anymore.
Both embroider and ember-auto-import test under fastboot to make sure this works.
@ef4 are you saying that ember-auto-import
allows you to require any node (not browser) module? This seems suspect, because for instance import fetch from "node:fetch"
isn't valid unless you are in a Fastboot context, but if this works there's probably a bunch of docs updates to do 😅
Oh yeah, no, I don't mean node built-ins or packages with native binaries will work both ways.
But even for those you can manage the swap between them with embroider/macros. That's actually what embroider does internally when we encounter classical fastboot directories that are intended to override a module only in fastboot.
Issues:
fetch
,Headers
ReadableStream
etc.buildSandboxGlobal
no longer runs, so there is no way to enhance the built in globals with WHATWG spec implementations of APIs such asAbortController
andfetch
even when these things exist as globals in node.~ (this turned out to be a config mishap for ember-cli-fastboot-testing see https://github.com/embermap/ember-cli-fastboot-testing/issues/488)fastbootDependencies
does not allow whitelisting local dependencies, which prevents applications from addressing this shortcoming short of usingpnpm patch
to splice in new globals. For instance the following fails to resolve withFastboot.require
Example recommended config for use with EmberData and fetch