Initial commit
This commit is contained in:
commit
6120969910
2 changed files with 110 additions and 0 deletions
106
index.js
Normal file
106
index.js
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
var fs = require("fs");
|
||||||
|
var routerServer = null;
|
||||||
|
var nextServerUtil = null;
|
||||||
|
var nextError = null;
|
||||||
|
var dev = process.env.NODE_ENV == "development";
|
||||||
|
var handle = function () {
|
||||||
|
throw nextError;
|
||||||
|
}
|
||||||
|
var appPreparationError = null;
|
||||||
|
var isPrepared = false;
|
||||||
|
var configJSON = {};
|
||||||
|
|
||||||
|
try {
|
||||||
|
configJSON = JSON.parse(fs.readFileSync(__dirname + "/../../config.json"));
|
||||||
|
} catch (err) {
|
||||||
|
// Ignore the error
|
||||||
|
}
|
||||||
|
|
||||||
|
var useHTTPS = configJSON.secure === undefined ? false : configJSON.secure;
|
||||||
|
var port = useHTTPS ? (configJSON.sport === undefined ? 443 : configJSON.sport) : (configJSON.port === undefined ? 80 : configJSON.port);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// process.cwd() is the webroot, the webroot will then act as a Next.js app directory
|
||||||
|
try {
|
||||||
|
// Use Next.js from Next.js app directory
|
||||||
|
routerServer = require(process.cwd() + "/node_modules/next/dist/server/lib/router-server.js");
|
||||||
|
nextServerUtil = require(process.cwd() + "/node_modules/next/dist/server/lib/utils.js");
|
||||||
|
} catch (err) {
|
||||||
|
// Fallback Next.js module.
|
||||||
|
try {
|
||||||
|
require(process.cwd() + "/node_modules/next");
|
||||||
|
throw new Error("Next.js version mismatch");
|
||||||
|
} catch (err) {
|
||||||
|
// No Next.js in Next.js app directory
|
||||||
|
}
|
||||||
|
routerServer = require("next/dist/server/lib/router-server.js");
|
||||||
|
nextServerUtil = require("next/dist/server/lib/utils.js");
|
||||||
|
}
|
||||||
|
async function init() {
|
||||||
|
try {
|
||||||
|
initResponse = await routerServer.initialize({
|
||||||
|
dir: process.cwd(),
|
||||||
|
port: port,
|
||||||
|
dev: dev,
|
||||||
|
isNodeDebugging: Boolean(nextServerUtil.checkNodeDebugType()) || false,
|
||||||
|
startServerSpan: undefined,
|
||||||
|
experimentalHttpsServer: useHTTPS
|
||||||
|
});
|
||||||
|
handle = initResponse[0];
|
||||||
|
isPrepared = true;
|
||||||
|
} catch (err) {
|
||||||
|
appPreparationError = err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
init();
|
||||||
|
} catch (err) {
|
||||||
|
// process.cwd() is the webroot, the webroot will then act as a Next.js app directory
|
||||||
|
try {
|
||||||
|
var next = null;
|
||||||
|
try {
|
||||||
|
// Use Next.js from Next.js app directory
|
||||||
|
next = require(process.cwd() + "/node_modules/next");
|
||||||
|
} catch (err) {
|
||||||
|
// Fallback Next.js module.
|
||||||
|
next = require("next");
|
||||||
|
}
|
||||||
|
|
||||||
|
var app = next({
|
||||||
|
dir: process.cwd(),
|
||||||
|
port: port,
|
||||||
|
dev: dev,
|
||||||
|
customServer: false
|
||||||
|
});
|
||||||
|
|
||||||
|
handle = app.getRequestHandler();
|
||||||
|
|
||||||
|
app.prepare().then(function () {
|
||||||
|
isPrepared = true;
|
||||||
|
}).catch(function (err) {
|
||||||
|
appPreparationError = err;
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
nextError = err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// The returned function has to be an async function, or else the errors will crash SVR.JS
|
||||||
|
function Mod() {}
|
||||||
|
Mod.prototype.callback = function callback(req, res, serverconsole, responseEnd, href, ext, uobject, search, defaultpage, users, page404, head, foot, fd, elseCallback, configJSON, callServerError, getCustomHeaders, origHref, redirect, parsePostData) {
|
||||||
|
return async function () {
|
||||||
|
try {
|
||||||
|
if (appPreparationError) throw appPreparationError;
|
||||||
|
if (!isPrepared) {
|
||||||
|
callServerError(503, "nextjs-integration/1.0.0");
|
||||||
|
serverconsole.errmessage("Next.js application not yet fully loaded.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await handle(req, res);
|
||||||
|
serverconsole.resmessage("Next.js request successfully processed.");
|
||||||
|
} catch (err) {
|
||||||
|
callServerError(500, "nextjs-integration/1.0.0", err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Mod;
|
4
mod.info
Executable file
4
mod.info
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"name": "Next.js integration for SVR.JS",
|
||||||
|
"version": "Nightly-GitMain"
|
||||||
|
}
|
Loading…
Reference in a new issue