nextJS with custom proxy API
-
Below is server.js which overwrites the default one. Note that I have to use
const { createProxyMiddleware } = require("http-proxy-middleware");
Instead of
if (dev && devProxy) { const proxyMiddleware = require('http-proxy-middleware') Object.keys(devProxy).forEach(function(context) { server.use(proxyMiddleware(context, devProxy[context])) }) }
In this example: https://github.com/zeit/next.js/blob/canary/examples/with-custom-reverse-proxy/server.js
/* eslint-disable no-console */ const express = require("express"); const next = require("next"); const { createProxyMiddleware } = require("http-proxy-middleware"); const devProxy = { "/api": { target: "http://localhost:3030", pathRewrite: { "^/api": "/" }, changeOrigin: true } }; const port = parseInt(process.env.PORT, 10) || 3000; const env = process.env.NODE_ENV ? process.env.NODE_ENV : "dev"; console.log(env); const dev = env !== "production"; const app = next({ dir: ".", // base directory where everything is, could move to src later dev }); const handle = app.getRequestHandler(); let server; app .prepare() .then(() => { server = express(); // Set up the proxy. if (dev && devProxy) { Object.keys(devProxy).forEach(function(context) { server.use(createProxyMiddleware(context, devProxy[context])); }); } // Default catch-all handler to allow Next.js to handle all other routes server.all("*", (req, res) => handle(req, res)); server.listen(port, err => { if (err) { throw err; } console.log(`> Ready on port ${port} [${env}]`); }); }) .catch(err => { console.log("An error occurred, unable to start the server"); console.log(err); });
-
I see it's due to different version of http-proxy-middleware being used.
My version is ^1.0.3
but the example uses ^0.17.4