无法读取未定义的属性“ getCompilationErrors”

时间:2019-07-08 18:47:32

标签: server serverless-framework next.js

我在使用nextJs在无服务器上设置快速服务器实例时遇到问题。运行服务器功能时,我一直收到Cannot read property 'getCompilationErrors' of undefined。 app.render似乎是一个问题。

  • 运行调试时,它似乎来自nextJs

Server.js

const express = require('express');
const path = require('path');
const dev = process.env.NODE_ENV !== 'production';
const next = require('next');
const pathMatch = require('path-match');

const app = next({ dev });
const handle = app.getRequestHandler();
const { parse } = require('url');

const server = express();
const route = pathMatch();

server.use('/_next', express.static(path.join(__dirname, '.next')));

server.get('/', (req, res) => app.render(req, res, '/'));

server.get('*', (req, res) => handle(req, res));


module.exports = server; 

index.js


const sls = require('serverless-http')
const binaryMimeTypes = require('./binaryMimeTypes')

const server = require('./server')

module.exports.server = sls(server, {
    binary: binaryMimeTypes
});

Serverless.yml


service: ssr-react-next

provider:
  name: aws
  runtime: nodejs8.10
  stage: ${self:custom.secrets.NODE_ENV}
  region: us-east-1
  environment: 
    NODE_ENV: ${self:custom.secrets.NODE_ENV}

functions:
  server:
    handler: index.server
    events:
      - http: ANY /
      - http: ANY /{proxy+}

plugins:
  - serverless-apigw-binary
  - serverless-domain-manager

custom:
  secrets: ${file(secrets.json)}
  apigwBinary:
    types:
      - '*/*'
  customDomain:
    domainName: ${self:custom.secrets.DOMAIN}
    basePath: ''
    stage: ${self:custom.secrets.NODE_ENV}
    createRoute53Record: true
    # endpointType: 'regional'
    # if the ACM certificate is created in a region except for `'us-east-1'` you need `endpointType: 'regional'`

2 个答案:

答案 0 :(得分:0)

想出了解决此问题的方法,只需要使用异步来准备应用程序

import torch
import numpy as np
from sklearn import datasets

X, y = datasets.make_blobs(n_samples = n_pts, random_state = 123, centers = centers, cluster_std = 0.4)

答案 1 :(得分:0)

您是否将其添加到server.js中,看起来像这样?

   server.js after server.use('/_next', express.static(path.join(__dirname, '.next')))
   server.use(async(req, res, next) => {
       await app.prepare();
       next();
   })