mirror of
https://github.com/withastro/astro.git
synced 2025-01-23 19:02:14 -05:00
fix(@astrojs/cloudflare): support for nodejs_compat (#8595)
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> Co-authored-by: Florian Lefebvre <contact@florian-lefebvre.dev>
This commit is contained in:
parent
9b84a7ef96
commit
5b0b3c9a8e
3 changed files with 71 additions and 0 deletions
20
.changeset/fifty-weeks-bake.md
Normal file
20
.changeset/fifty-weeks-bake.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
'@astrojs/cloudflare': minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Add support for the following Node.js Runtime APIs, which are availabe in [Cloudflare](https://developers.cloudflare.com/workers/runtime-apis/nodejs) using the `node:` syntax.
|
||||||
|
|
||||||
|
- assert
|
||||||
|
- AsyncLocalStorage
|
||||||
|
- Buffer
|
||||||
|
- Diagnostics Channel
|
||||||
|
- EventEmitter
|
||||||
|
- path
|
||||||
|
- process
|
||||||
|
- Streams
|
||||||
|
- StringDecoder
|
||||||
|
- util
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { Buffer } from 'node:buffer';
|
||||||
|
```
|
|
@ -202,6 +202,33 @@ This will enable Cloudflare to serve files and process static redirects without
|
||||||
|
|
||||||
See [Cloudflare's documentation](https://developers.cloudflare.com/pages/platform/functions/routing/#create-a-_routesjson-file) for more details.
|
See [Cloudflare's documentation](https://developers.cloudflare.com/pages/platform/functions/routing/#create-a-_routesjson-file) for more details.
|
||||||
|
|
||||||
|
## Node.js compatibility
|
||||||
|
|
||||||
|
Astro's Cloudflare adapter allows you to use any Node.js runtime API supported by Cloudflare:
|
||||||
|
|
||||||
|
- assert
|
||||||
|
- AsyncLocalStorage
|
||||||
|
- Buffer
|
||||||
|
- Diagnostics Channel
|
||||||
|
- EventEmitter
|
||||||
|
- path
|
||||||
|
- process
|
||||||
|
- Streams
|
||||||
|
- StringDecoder
|
||||||
|
- util
|
||||||
|
|
||||||
|
To use these APIs, your page or endpoint must be server-side rendered (not pre-rendered) and must use the the `import {} from 'node:*'` import syntax.
|
||||||
|
|
||||||
|
```js
|
||||||
|
// pages/api/endpoint.js
|
||||||
|
export const prerender = false;
|
||||||
|
import { Buffer } from 'node:buffer';
|
||||||
|
```
|
||||||
|
|
||||||
|
Additionally, you'll need to enable the Compatibility Flag in Cloudflare. The configuration for this flag may vary based on where you deploy your Astro site.
|
||||||
|
|
||||||
|
For detailed guidance, please refer to the [Cloudflare documentation](https://developers.cloudflare.com/workers/runtime-apis/nodejs).
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
For help, check out the `#support` channel on [Discord](https://astro.build/chat). Our friendly Support Squad members are here to help!
|
For help, check out the `#support` channel on [Discord](https://astro.build/chat). Our friendly Support Squad members are here to help!
|
||||||
|
|
|
@ -296,6 +296,18 @@ export default function createIntegration(args?: Options): AstroIntegration {
|
||||||
target: 'es2020',
|
target: 'es2020',
|
||||||
platform: 'browser',
|
platform: 'browser',
|
||||||
conditions: ['workerd', 'worker', 'browser'],
|
conditions: ['workerd', 'worker', 'browser'],
|
||||||
|
external: [
|
||||||
|
'node:assert',
|
||||||
|
'node:async_hooks',
|
||||||
|
'node:buffer',
|
||||||
|
'node:diagnostics_channel',
|
||||||
|
'node:events',
|
||||||
|
'node:path',
|
||||||
|
'node:process',
|
||||||
|
'node:stream',
|
||||||
|
'node:string_decoder',
|
||||||
|
'node:util',
|
||||||
|
],
|
||||||
entryPoints: entryPaths,
|
entryPoints: entryPaths,
|
||||||
outdir: outputDir,
|
outdir: outputDir,
|
||||||
allowOverwrite: true,
|
allowOverwrite: true,
|
||||||
|
@ -357,6 +369,18 @@ export default function createIntegration(args?: Options): AstroIntegration {
|
||||||
target: 'es2020',
|
target: 'es2020',
|
||||||
platform: 'browser',
|
platform: 'browser',
|
||||||
conditions: ['workerd', 'worker', 'browser'],
|
conditions: ['workerd', 'worker', 'browser'],
|
||||||
|
external: [
|
||||||
|
'node:assert',
|
||||||
|
'node:async_hooks',
|
||||||
|
'node:buffer',
|
||||||
|
'node:diagnostics_channel',
|
||||||
|
'node:events',
|
||||||
|
'node:path',
|
||||||
|
'node:process',
|
||||||
|
'node:stream',
|
||||||
|
'node:string_decoder',
|
||||||
|
'node:util',
|
||||||
|
],
|
||||||
entryPoints: [entryPath],
|
entryPoints: [entryPath],
|
||||||
outfile: buildPath,
|
outfile: buildPath,
|
||||||
allowOverwrite: true,
|
allowOverwrite: true,
|
||||||
|
|
Loading…
Add table
Reference in a new issue