Description
Description
Problem Statement
Currently, you have to add the Sentry server config from the build output to the --input
parameter of your node script like this:
node --import ./.output/server/sentry.server.config.mjs .output/server/index.mjs
The --import
CLI flag makes it possible to preload a module. The server config file needs to be added with the --import
flag as Sentry needs to be loaded before other modules to register a hook internally:
However, this needs extra configuration from the user-side and it makes the deployment setup more complicated (as different deployment providers have a different feature set and most don't fully support modification of the node
run script).
Solution
The internally discussed idea is to wrap the server entry file with a dynamic import (import()
), as this also runs the code after everything else (see here).
This would change the output from this:
server/
|-- index.mjs (server entry with "import './chunk/runtime.mjs'")
|-- sentry.server.config.mjs (sentry config)
|-- chunk/
| |-- runtime.mjs (server runtime)
to this:
server/
|-- index.mjs (server entry with "import('./chunk/runtime.mjs')" and "import './sentry.server.config.mjs'")
|-- sentry.server.config.mjs (sentry config)
|-- chunk/
| |-- runtime.mjs (server runtime)
Tasks
- Create a rollup plugin which wraps the server entry with
import()
feat(nuxt): Add Rollup plugin to wrap server entry withimport()
#13945 - Make the "wrapping" functionality the default feat(nuxt): Make dynamic import() wrapping default #13958
- (optional - later, if required) Offer an opt-out option for people who still want to use the
--import
flag feat(nuxt): Make dynamic import() wrapping default #13958