Пример #1
0
 generateRoutes() {
     const routes = super.generateRoutes();
     // In development we expose all compiled files for react-error-overlay's line show feature
     // We use unshift so that we're sure the routes is defined before Next's default routes
     routes.unshift({
         match: router_1.route('/_next/development/:path*'),
         fn: async (req, res, params) => {
             const p = path_1.join(this.distDir, ...(params.path || []));
             await this.serveStatic(req, res, p);
         }
     });
     return routes;
 }
Пример #2
0
 async addExportPathMapRoutes() {
     // Makes `next export` exportPathMap work in development mode.
     // So that the user doesn't have to define a custom server reading the exportPathMap
     if (this.nextConfig.exportPathMap) {
         console.log('Defining routes from exportPathMap');
         const exportPathMap = await this.nextConfig.exportPathMap({}, { dev: true, dir: this.dir, outDir: null, distDir: this.distDir, buildId: this.buildId }); // In development we can't give a default path mapping
         for (const path in exportPathMap) {
             const { page, query = {} } = exportPathMap[path];
             // We use unshift so that we're sure the routes is defined before Next's default routes
             this.router.add({
                 match: router_1.route(path),
                 fn: async (req, res, params, parsedUrl) => {
                     const { query: urlQuery } = parsedUrl;
                     Object.keys(urlQuery)
                         .filter(key => query[key] === undefined)
                         .forEach(key => console.warn(`Url defines a query parameter '${key}' that is missing in exportPathMap`));
                     const mergedQuery = Object.assign({}, urlQuery, query);
                     await this.render(req, res, page, mergedQuery, parsedUrl);
                 }
             });
         }
     }
 }
Пример #3
0
        return { preflight: false };
    }
    res.setHeader('Access-Control-Allow-Origin', req.headers.origin);
    res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET');
    // Based on https://github.com/primus/access-control/blob/4cf1bc0e54b086c91e6aa44fb14966fa5ef7549c/index.js#L158
    if (req.headers['access-control-request-headers']) {
        res.setHeader('Access-Control-Allow-Headers', req.headers['access-control-request-headers']);
    }
    if (req.method === 'OPTIONS') {
        res.writeHead(200);
        res.end();
        return { preflight: true };
    }
    return { preflight: false };
}
const matchNextPageBundleRequest = router_1.route('/_next/static/:buildId/pages/:path*.js(.map)?');
// Recursively look up the issuer till it ends up at the root
function findEntryModule(issuer) {
    if (issuer.issuer) {
        return findEntryModule(issuer.issuer);
    }
    return issuer;
}
function erroredPages(compilation, options = { enhanceName: (name) => name }) {
    const failedPages = {};
    for (const error of compilation.errors) {
        const entryModule = findEntryModule(error.origin);
        const { name } = entryModule;
        if (!name) {
            continue;
        }