Node.js 无法链接后端API路由-NextJS 我制作了一个SualEngy应用程序,并在同一个端口创建了一个KOA+NoDEJS后端和NEXJS,并且在我的PC机中运行本地时,我创建了一个定制Server .js文件,它运行正常,所有的路由都是按预期的方式工作,并且我能够从前端(从KoA)中定义的路由中获取数据(反应)。 现在问题是,当我把应用程序部署到Vcel时,它似乎没有识别出我的膝关节炎的路由,并且在控制台上为后端路由所做的所有请求投了404个错误。这是我第一次使用NextJS,所以我对这里的错误几乎一无所知,所以我希望得到一些支持

Node.js 无法链接后端API路由-NextJS 我制作了一个SualEngy应用程序,并在同一个端口创建了一个KOA+NoDEJS后端和NEXJS,并且在我的PC机中运行本地时,我创建了一个定制Server .js文件,它运行正常,所有的路由都是按预期的方式工作,并且我能够从前端(从KoA)中定义的路由中获取数据(反应)。 现在问题是,当我把应用程序部署到Vcel时,它似乎没有识别出我的膝关节炎的路由,并且在控制台上为后端路由所做的所有请求投了404个错误。这是我第一次使用NextJS,所以我对这里的错误几乎一无所知,所以我希望得到一些支持,node.js,shopify,next.js,koa,Node.js,Shopify,Next.js,Koa,此外,当我部署它时,shopify auth似乎也不再像在本地开发中运行时那样工作了 我的代码: server.js: require('isomorphic-fetch'); const dotenv=require('dotenv'); dotenv.config(); const KoA=要求(“膝关节炎”); const next=需要(“next”); const{default:createShopifyAuth}=require('@shopify/koa shopify-auth

此外,当我部署它时,shopify auth似乎也不再像在本地开发中运行时那样工作了

我的代码: server.js:

require('isomorphic-fetch');
const dotenv=require('dotenv');
dotenv.config();
const KoA=要求(“膝关节炎”);
const next=需要(“next”);
const{default:createShopifyAuth}=require('@shopify/koa shopify-auth');
const{verifyRequest}=require('@shopify/koa shopify auth');
const session=require('koa-session');
const{default:graphQLProxy}=require('@shopify/koa shopify graphQLProxy');
const{ApiVersion}=require('@shopify/koa shopify graphql proxy');
const Router=require('koa-Router');
const{receiveWebhook,registerWebhook}=require('@shopify/koa shopify webhooks');
const getSubscriptionUrl=require('./server/getSubscriptionUrl');
const port=parseInt(process.env.port,10)| 3000;
const dev=process.env.NODE_env!='生产",;
const app=next({dev});
const handle=app.getRequestHandler();
常数{
SHOPIFY\u API\u密钥,
SHOPIFY_API_密钥,
主办
}=process.env;
app.prepare()然后(()=>{
const server=new Koa();
const router=新路由器();
use(会话({sameSite:'none',secure:true},server));
server.keys=[SHOPIFY\u API\u SECRET\u KEY];
server.use(
createShopifyAuth({
apiKey:SHOPIFY_API_密钥,
秘密:SHOPIFY\u API\u秘密密钥,
范围:[“读产品”、“写产品”],
异步afterAuth(ctx){
const{shop,accessToken}=ctx.session;
ctx.cookies.set(“shopOrigin”,商店{
httpOnly:false,
安全:是的,
sameSite:“没有”
});
const registration=wait registerWebhook({
地址:`${HOST}/webhooks/products/create`,
主题:“创造产品”,
accessToken,
商店,
apiVersion:apiVersion.October19
});
如果(注册成功){
log('已成功注册webhook!');
}否则{
console.log('未能注册webhook',registration.result);
}
等待getSubscriptionUrl(ctx、accessToken、shop);
}
})
);
路由器
.get('/api',ctx=>{
ctx.res.statusCode=200;
ctx.body=“API路线”
})
const webhook=receiveWebhook({secret:SHOPIFY\u API\u secret\u KEY});
router.post('/webhooks/products/create',webhook,(ctx)=>{
log('received webhook:',ctx.state.webhook);
});
use(graphQLProxy({version:ApiVersion.April19}));
router.get('*',verifyRequest(),async(ctx)=>{
等待句柄(ctx.req、ctx.res);
ctx.respond=false;
ctx.res.statusCode=200;
});
使用(router.allowedMethods());
server.use(router.routes());
服务器。侦听(端口,()=>{
console.log(`>已准备就绪http://localhost:${port}`);
});
});

如果我没说错的话,我发现Vercel不再支持定制服务器了。由此

所以,我用Heroku来部署我的应用程序,现在它可以正常工作了