我正在尝试让这个FETCH方法在Svelte中工作
当page.svelte调用函数来获取数据时,我在控制台中收到以下内容
[HTTP/1.1 405 Method Not Allowed 19ms]
我已经把范围缩小到了
POST method not allowed
是否需要在配置文件中设置变量,或者是否缺少其他解决方案?
//svelte.config.js
import adapter from '@sveltejs/adapter-auto';
const config = {
kit: {
adapter: adapter(),
methodOverride: {
allowed: ['POST']
},
}
};
export default config;
这两个文件都位于路径文件夹中
//FETCH-data.js
export const POST = async(data) => {
const response = // get data function here
return {
body: {
data: response
}
}
}
//Page.svelte
async function fetchData() {
const response = await fetch('./fetch-data', {
method: 'POST',
body: JSON.stringify(),
headers: {
'content-type': 'application/json'
}
})
const { data } = await response.json()
return data
}
3条答案
按热度按时间hxzsmxv21#
解决方案是在Get-data.js文件中将
POST
变量名更改为小写rqmkfv5c2#
由于不同的原因,我也犯了同样的错误,并且您的问题和答案中的语法再次更改,因此我将添加我的发现:
+page.server.ts
不再应该是export const POST
,而是不需要返回任何内容的export const actions: Actions = { ... }
。+server.ts
仍使用function POST(event: RequestEvent)
,需要从Fetch接口返回Response
。setHeaders
设置,而必须使用cookies
。否则,处理程序也返回405。ijxebb2r3#
由于旧的SvelteKit版本(我使用的是.456,编写本文时的当前版本是.484),我也遇到了同样的问题。因此,在参考文档时,请确保您拥有最新版本的框架;)