Javascript Next.js表单在本地工作,但不在live server上工作

Javascript Next.js表单在本地工作,但不在live server上工作,javascript,node.js,reactjs,next.js,Javascript,Node.js,Reactjs,Next.js,我一直在为我的一个附带项目实现一个Next.js应用程序。这是一个基本的小册子风格的网站与联系方式 当站点在本地运行时,表单工作得非常好,但是我刚刚将站点发布到Netlify,现在在提交表单时遇到以下错误: POST https://dux.io/api/form 404 Uncaught (in promise) Error: Request failed with status code 404 at e.exports (contact.js:9) at e.exports (contac

我一直在为我的一个附带项目实现一个Next.js应用程序。这是一个基本的小册子风格的网站与联系方式

当站点在本地运行时,表单工作得非常好,但是我刚刚将站点发布到Netlify,现在在提交表单时遇到以下错误:

POST https://dux.io/api/form 404
Uncaught (in promise) Error: Request failed with status code 404
at e.exports (contact.js:9)
at e.exports (contact.js:16)
at XMLHttpRequest.d.(/contact/anonymous function) (https://dux.io/_next/static/cFeeqtpSGmy3dLZAZZWRt/pages/contact.js:9:4271)
任何帮助都将不胜感激

这是我的表单提交功能:

async handleSubmit(e) {
e.preventDefault();

const { name, email, option, message } = this.state;

const form = await axios.post('/api/form', {
  name,
  email,
  option,
  message
});

this.setState(initialState);}
这是我的server.js文件:

const express=require('express');
const next=需要(“next”);
const bodyParser=require('body-parser');
const mailer=require('./mailer');
常量压缩=需要(“压缩”);
const dev=process.env.NODE_env!='生产",;
const app=next({dev});
const handle=app.getRequestHandler();
app.prepare()然后(()=>{
const server=express();
使用(compression());
use(bodyParser.json());
server.post('/api/form',(req,res)=>{
const{email='',name='',option='',message=''}=req.body;
邮件程序({电子邮件、名称、选项、文本:message})
.然后(()=>{
console.log('success');
res.send(“成功”);
})
.catch(错误=>{
console.log('failed',error);
res.send('baddd');
});
});
server.get('*',(req,res)=>{
返回句柄(req、res);
});
监听(3000,错误=>{
如果(错误)抛出错误;
console.log('>readonhttp://localhost:3000');
});

});那么,试着使用完整的端点
http://~~~~/api/form
而不仅仅是
/api/form

或者我认为,如果使用process.env,您可以解决这个问题

const config = {
  endpoint: 'http://localhost:8080/api'
}

if (process.env.NODE_ENV === 'production') {
  config.endpoint = 'hostname/api'
}

试着使用完整的端点
http://~~~/api/form
而不仅仅是
/api/form

或者我认为,如果使用process.env,您可以解决这个问题

const config = {
  endpoint: 'http://localhost:8080/api'
}

if (process.env.NODE_ENV === 'production') {
  config.endpoint = 'hostname/api'
}

看起来nextjs试图呈现
/api/form
页面,但您得到了一个找不到的结果


请确保您使用
node server.js
启动服务器,而不是
next start

它看起来像是nextjs试图呈现
/api/form
页面,但您没有找到该页面


请确保您使用
node server.js
启动服务器,而不是
next start

我目前正在这样做!以下是我的package.json文件中的脚本:
“脚本”:{“测试”:“echo\”错误:未指定测试\“&&exit 1”,“开发”:“node server.js”,“构建”:“下一个构建”,“开始”:“node server.js”,“导出”:“npm运行构建和下一个导出”}
还有其他想法吗?你不能使用自定义的next.js服务器,因为Netlify只能提供静态页面。我目前正在这样做!以下是我的package.json文件中的脚本:
“脚本”:{“测试”:“echo\”错误:未指定测试\“&&exit 1”,“开发”:“node server.js”,“构建”:“下一个构建”,“开始”:“node server.js”,“导出”:“npm运行构建和下一个导出”}
关于是什么原因导致了这种情况,还有其他想法吗?您不能使用custom next.js server,因为Netlify只能提供静态页面。