静态适配器在尝试为生产构建时抛出"Using @sveltejs/adapter-static TypeError: render2 is not a function"



尝试使用静态适配器构建sveltekit应用程序,我得到这个错误:使用@sveltejs/adapter-static TypeError: render2不是一个函数

我不久前创建了一个sveltekit应用程序,并更新了软件包,因为我要将网站发布到生产环境中。然后适配器开始抛出上述错误。

查找下面的答案

我试图找到一个解决方案一段时间,并找到了解决方案:

https://www.reddit.com/r/SvelteKit/comments/npwc6m/sveltekit_adapternode_error_on_production/

问题是钩子。先前版本的svelte kit支撑的Ts文件与新版本不兼容。

长话短说:

处理函数的参数从{request, render}更改为{request, resolve}。

将渲染改为resolve,问题就解决了。简单的修复,但令人沮丧

下面的完整代码

import cookie from 'cookie';
import { v4 as uuid } from '@lukeed/uuid';
import type { Handle } from '@sveltejs/kit';
export const handle: Handle = async ({ request, render }) => {
const cookies = cookie.parse(request.headers.cookie || '');
request.locals.userid = cookies.userid || uuid();
// TODO https://github.com/sveltejs/kit/issues/1046
if (request.query.has('_method')) {
request.method = request.query.get('_method').toUpperCase();
}
const response = await render(request);
if (!cookies.userid) {
// if this is the first time the user has visited this app,
// set a cookie so that we recognise them when they return
response.headers['set-cookie'] = `userid=${request.locals.userid}; Path=/; HttpOnly`;
}
return response;
};

改为:

import cookie from 'cookie';
import { v4 as uuid } from '@lukeed/uuid';
import type { Handle } from '@sveltejs/kit';
export const handle: Handle = async ({ request, resolve }) => {
const cookies = cookie.parse(request.headers.cookie || '');
request.locals.userid = cookies.userid || uuid();
// TODO https://github.com/sveltejs/kit/issues/1046
if (request.query.has('_method')) {
request.method = request.query.get('_method').toUpperCase();
}
const response = await resolve(request);
if (!cookies.userid) {
// if this is the first time the user has visited this app,
// set a cookie so that we recognise them when they return
response.headers['set-cookie'] = `userid=${request.locals.userid}; Path=/; HttpOnly`;
}
return response;
};

最新更新