Server 无法读取属性';GetCompliationErrors';未定义的

Server 无法读取属性';GetCompliationErrors';未定义的,server,serverless-framework,next.js,Server,Serverless Framework,Next.js,我在使用nextJs在无服务器上设置express server实例时遇到问题。运行服务器函数时,我不断收到一个无法读取未定义的属性“GetCompliationErrors”。这似乎是app.render的问题 运行debug时,它似乎来自nextJs内部 Server.js const express=require('express'); const path=require('path'); const dev=process.env.NODE_env!='生产",; const n

我在使用nextJs在无服务器上设置express server实例时遇到问题。运行服务器函数时,我不断收到一个
无法读取未定义的属性“GetCompliationErrors”。这似乎是app.render的问题

  • 运行debug时,它似乎来自nextJs内部
Server.js

const express=require('express');
const path=require('path');
const dev=process.env.NODE_env!='生产",;
const next=需要(“next”);
const pathMatch=require('path-match');
const app=next({dev});
const handle=app.getRequestHandler();
const{parse}=require('url');
const server=express();
常量路由=路径匹配();
使用('/_next',express.static(path.join(u dirname,.next'));
server.get('/',(req,res)=>app.render(req,res,'/');
get('*',(req,res)=>handle(req,res));
module.exports=服务器;
index.js


const sls=require('serverless-http')
const binaryMimeTypes=require(“./binaryMimeTypes”)
const server=require(“./server”)
module.exports.server=sls(服务器、{
二进制:二进制mimetypes
});
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'`

找到了解决这个问题的方法,只需要使用async来准备应用程序

server.use(异步(req,res,next)=>{
等待app.prepare();
next();
})

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

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

这解决了错误,但创建了一个新的错误:“错误:EROFS:只读文件系统,取消链接'/var/task/.next/BUILD_ID'”。现在将在每个请求上调用它,否?为了将来参考,此问题与本教程相关: