我关注了几个与我遇到的同一问题相关的博客和问题。这就像这个问题。但是,我仍然遇到问题。
所以,我正在运行
netlify dev
并尝试访问我的 netlify 函数。我在 /netlify/functions/ping
中有一个函数。当我访问 netlify 函数的随机端口(例如 localhost:55832...)时,该函数按预期工作。
但是,使用
localhost:8888/.netlify/functions/ping
会给我一个 404 错误。
这是我的 /netlify/functions/ping 文件:
import { Handler } from '@netlify/functions';
const handler: Handler = async (event, context) => {
return {
statusCode: 200,
body: JSON.stringify({ data: "pong" }),
};
};
export { handler };
这是我尝试在页面上调用我的函数的地方
export default function HomePage() {
useEffect(() => {
async function pingpong() {
const res = await fetch(`/.netlify/functions/ping`);
console.log(res);
}
pingpong();
}, []);
return (
...
我还尝试使用以下内容更改我的 netlify.toml
[[redirects]]
from = "/api/*"
to = "/.netlify/functions/:splat"
status = 200
force = true
package.json 中使用的启动脚本是什么?
请记住,要启用 Netlify 功能,您必须使用 netlify-cli,即
ntl
命令在本地开发服务器上运行。
没有更具体的配置,只需遵循文档,并使用那个简单的
netlify/functions/hello.js
示例即可。
然后使用
ntl dev
运行,您的功能将在/.netlify/functions/hello
上可用。容易。
对于任何有类似问题的人,请应用下面列出的所有内容:
在 [yourFunction].js 中使用 commonjs 语法 - 将
export const handler =
更改为 exports.handler =
并使用 require
而不是 import
。
将您的函数放在根文件夹的“functions”目录中,而不是“netlify/functions”,但保持获取的网址相同。
将 netlify.toml 文件添加到根目录并将其放入其中:
[build] command = 'npm run build' functions= 'functions' publish = 'dist'
。
不要像帖子中所示导入处理程序。实际上,您不需要“@netlify/functions”即可工作。如果您想尝试本地是否一切正常,请全局安装 netlify 并运行命令“netlify login”(以验证您的 Netlify 帐户),然后运行“netlify dev”。
这是我的示例函数:
导入“dotenv/config”; 从“stripe”导入Stripe; const stripe = Stripe(process.env.STRIPE_SECRET_KEY);
exports.handler = 异步(事件)=> { 尝试 { const { 金额 } = JSON.parse(event.body);
const paymentIntent = await stripe.paymentIntents.create({
amount,
currency: "usd",
payment_method_types: ["card"],
});
return {
statusCode: 200,
body: JSON.stringify({ paymentIntent }),
};
} 捕获(错误){ console.log({ 错误 });
return {
statusCode: 400,
body: JSON.stringify({ error }),
};
} };
只有这个解决方案解决了我的问题,希望它也能解决你的问题:)