默认情况下,NextJs 中间件使用 Edge 运行时运行,据我了解,这是因为中间件应该在边缘网络而不是主服务器上运行(在边缘网络上运行会减少延迟,因此这提供了改进)某些场景下的性能)。
这样做的缺点是 Edge 运行时在可以运行的内容方面存在一些限制(在此处列出)。
我的问题是:有没有办法让中间件使用默认运行时而不是 Edge 运行时运行?
在我的情况下,我们没有在边缘托管任何东西,因此边缘运行时对我们施加了一些限制,但没有提供任何好处。一种可能的解决方法是使用自定义中间件而不是 NextJs 中间件,但除非这是唯一的选择,否则我宁愿使用 NextJs 中间件架构和管道,而不是构建我们自己的中间件。
Ps:我们正在使用 NextJs 12.1.6(latest撰写此问题时的版本)
我正在尝试使用 SvelteKit 和 Cloudflare Pages 创建一个新应用程序,但我正在努力以正确的方式在本地运行该应用程序。目前,为了让应用程序在本地运行,我在 2 个不同的终端中运行 2 个脚本:
vite build --watch
cloudflare在.svelte-kit目录中创建目录vite dev似乎没有创建cloudflare目录,所以我用过vite buildwrangler pages dev .svelte-kit/cloudflare --live-reload
上述方法有效,即它按预期启动应用程序。问题是,我对代码所做的任何更改都会在 3-4 秒后在浏览器选项卡中可见,从 DX 的角度来看,这远远不能让人享受。理想情况下,在本地运行时,任何代码更改都应该在 1 秒左右的时间内在浏览器选项卡中可见。
这是我第一次修改 SvelteKit 和 Cloudflare Pages,所以我确信我错过了一些东西。因此,问题是:应该如何“以正确的方式”在本地运行 SvelteKit 和 Cloudflare Pages 应用程序?“正确的方式”意味着我可以在 1 秒左右看到代码更改的效果,并且我可以使用类似wrangler或 的东西在本地运行应用程序miniflare,以使本地环境尽可能类似于生产环境。
Ps:我检查过https://developers.cloudflare.com/pages/framework-guides/deploy-a-svelte-site/和https://www.npmjs.com/package/@sveltejs/adapter-等文档cloudflare, readme.md但他们主要关注如何在生产中运行应用程序Pps:我相信这两个脚本可以使用并发
之类的东西合并为一个脚本,但目前我的重点是在代码更改时获得快速反馈
Ppps:捆绑和修改 javascript 模块本身并不是我的强项之一,所以如果您有任何有用的文章,我们非常欢迎
我正在尝试设置 Miragejs 服务器,但由于某种原因,该seeds函数未被调用。routes调用另一个服务器函数并正确映射路由。
export default function makeServer({ environment = 'test' } = {}) {
return new Server({
environment,
models: {
user: Model,
diary: Model,
},
seeds(server) {
debugger; // not hit
seedUsers(server);
seedDiaries(server);
},
routes() {
debugger; // hit
this.namespace = 'api';
this.get('/users', (schema) => schema.users.all());
this.get('/diaries', (schema) => {
debugger; // hit
schema.diaries.all();
});
},
});
}
Run Code Online (Sandbox Code Playgroud)
我已尝试复制粘贴提供的示例,但该seeds方法仍然没有被调用。
miragejs 包作为开发包安装,使用的版本是 0.1.40。该makeServer函数在 index.jsx 文件中调用如下:
if (process.env.NODE_ENV === 'development') {
makeServer(); …Run Code Online (Sandbox Code Playgroud)