Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError: Cannot read property 'map' of undefined at Server.generateRoutes #9970

Closed
raguiar2 opened this issue Jan 6, 2020 · 18 comments
Closed
Labels
please add a complete reproduction The issue lacks information for further investigation

Comments

@raguiar2
Copy link

raguiar2 commented Jan 6, 2020

Bug report

Describe the bug

I've been using nextjs with typescript to build a web app (based off of the example at https://github.com/mui-org/material-ui/tree/master/examples/nextjs-with-typescript). However, when I deploy my app to an AWS elastic beanstalk instance, I get a strange error that breaks my app. next start does not run correctly. I cannot reproduce this locally, only when I deploy to AWS's elastic beanstalk.

Stack trace:

> next start --port 8081

TypeError: Cannot read property 'map' of undefined
    at Server.generateRoutes (/var/app/current/node_modules/next/dist/next-server/server/next-server.js:257:36)
    at new Server (/var/app/current/node_modules/next/dist/next-server/server/next-server.js:81:49)
    at createServer (/var/app/current/node_modules/next/dist/server/next.js:2:133)
    at start (/var/app/current/node_modules/next/dist/server/lib/start-server.js:1:323)
    at nextStart (/var/app/current/node_modules/next/dist/cli/next-start.js:22:125)
    at commands.(anonymous function).then.exec (/var/app/current/node_modules/next/dist/bin/next:29:346)
    at process._tickCallback (internal/process/next_tick.js:68:7)
    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! test-website@1.0.0 start: `next start --port 8081`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the test-website@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

To Reproduce

Deploy nextjs app with typescript to elastic beanstalk instance

Expected behavior

The app should just run next start normally.

System information

  • OS: Node.js running on 64bit Amazon Linux/4.12.0
  • Version of Next.js: both 9.1.16 and 9.1.17
@takashi-yokomichi
Copy link

Same error happen.
This error may only happen if we start up server with custom server.
https://nextjs.org/docs/advanced-features/custom-server

Temporary I've resolve the issue by decrease next.js version to 9.1.14

@mogaming217
Copy link

This error occued in next.js 9.1.6 too.

@timneutkens
Copy link
Member

A full reproduction is needed.

@timneutkens timneutkens added the please add a complete reproduction The issue lacks information for further investigation label Jan 7, 2020
@adamthewan
Copy link

Facing this issue as well and downgraded to 9.1.4

@timneutkens
Copy link
Member

@adamthewan please provide a full reproduction otherwise your comment really is not helpful in resolving the issue.

@adamthewan
Copy link

adamthewan commented Jan 10, 2020

Yup sorry about that.

My build environment is inside Google Cloud Functions

System information

OS: Node.js 10 (Beta)
Version of Next.js: 9.1.7

My build is something like this:

const next = require('next');
const path = require('path');

exports.app = functions.https.onRequest(async (req, res) => {
  const nextApp = next({
    dev: false,
    conf: {
      distDir: `${path.relative(process.cwd(), __dirname)}/dist/prod/.next`,
    },
  });

    await nextApp.prepare();
    const handle = nextApp.getRequestHandler();
    handle(req, res);
  
});

Describe the bug

When accessing the endpoint, the server will crash with this log:

TypeError: Cannot read property 'map' of undefined
    at Server.generateRoutes (/srv/functions/node_modules/next/dist/next-server/server/next-server.js:257:36)
    at new Server (/srv/functions/node_modules/next/dist/next-server/server/next-server.js:81:49)
    at createServer (/srv/functions/node_modules/next/dist/server/next.js:2:133)
    at exports.app.functions.https.onRequest (/srv/functions/index.js:12:19)
    at cloudFunction (/srv/functions/node_modules/firebase-functions/lib/providers/https.js:49:9)
    at process.nextTick (/srv/node_modules/@google-cloud/functions-framework/build/src/invoker.js:243:17)
    at process._tickCallback (internal/process/next_tick.js:61:11)

@timneutkens
Copy link
Member

I'm going to post the exact same reply. This time with bold text.

Please provide a full reproduction otherwise the comment really is not helpful in resolving the issue.

@vaibhav269
Copy link

facing the same issue

@timneutkens
Copy link
Member

timneutkens commented Jan 14, 2020

@vaibhav269 this is really not helpful in resolving the issue. As said:

Please provide a full reproduction otherwise the comment really is not helpful in resolving the issue.

@vaibhav269
Copy link

This is the package.json file

{
  "name": "darecase",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "@fortawesome/fontawesome-svg-core": "^1.2.26",
    "@fortawesome/free-solid-svg-icons": "^5.12.0",
    "@fortawesome/react-fontawesome": "^0.1.8",
    "cookie-parser": "^1.4.4",
    "express": "^4.17.1",
    "isomorphic-unfetch": "^3.0.0",
    "js-cookie": "^2.2.1",
    "mysql": "^2.17.1",
    "next": "9.1.4",
    "rand-token": "^0.4.0",
    "react": "^16.12.0",
    "react-dom": "^16.12.0"
  },
  "devDependencies": {
    "styled-jsx": "^3.2.4"
  },
  "scripts": {
    "dev": "nodemon index.js",
    "build": "next build",
    "start": "NODE_ENV=production node index.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

The server file is

const next = require('next');
const express = require('express');
const uid = require('rand-token').uid;
const dev = process.env.NODE_ENV !== 'production';
const port = process.env.port || 3000;
const con = require('./config/db');
const cookieParser = require('cookie-parser');

const app = next({dev});
const handle = app.getRequestHandler();

app.prepare().then(()=>{
    const server = express();
    server.use(express.json());
    
    server.use(cookieParser());

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

    server.listen(port,err=>{
        if(err){
            throw err;
        }else{
            console.log("server running at port",port);
        }
    })
})

Everything works fine in local server but when i try to host the application to the server in production mode i get this error on running 'npm run start'
Note: The application works fine in the development mode too... I am facing the error only in the case of production mode.

TypeError: Cannot read property 'map' of undefined
    at Server.generateRoutes (/var/app/current/node_modules/next/dist/next-server/server/next-server.js:257:36)
    at new Server (/var/app/current/node_modules/next/dist/next-server/server/next-server.js:81:49)
    at createServer (/var/app/current/node_modules/next/dist/server/next.js:2:133)
    at start (/var/app/current/node_modules/next/dist/server/lib/start-server.js:1:323)
    at nextStart (/var/app/current/node_modules/next/dist/cli/next-start.js:22:125)
    at commands.(anonymous function).then.exec (/var/app/current/node_modules/next/dist/bin/next:29:346)
    at process._tickCallback (internal/process/next_tick.js:68:7)
    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! test-website@1.0.0 start: `next start --port 8081`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the test-website@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Fixed the issue by sticking to the version v9.4.1 i.e by removing the '^' in "next": "^9.1.4" in package.json

Hope that helps :)

@timneutkens
Copy link
Member

Please provide a full reproduction including all code. Just 2 files is not enough.

@vaibhav269
Copy link

Sorry but i can't reveal the full code. Try it out according to me given files are enough to reproduce the error.

  1. Run 'npm install'
  2. Run 'npm run build'
  3. Host the application to a server
  4. Run 'npm run start'

You will probably get the error

@timneutkens
Copy link
Member

timneutkens commented Jan 15, 2020

@vaibhav269 Just tried it with the provided files and steps and I could not reproduce.

@modamodamoda
Copy link

modamodamoda commented Jan 24, 2020

I was able to fix the issue simply with
rm -rf .next (i.e. clearing the "cached" files) and then building anew with npm run build

I will say one thing however, there's a lot of issues I've been having with next.js and whenever I find the bug posted here the development team always seem to deny any issues.

In this case, it's not really a bug with next.js, but perhaps advising to clear the cache and rebuild would be more constructive than "Cannot reproduce. Next.js can do no wrong."

@timneutkens
Copy link
Member

timneutkens commented Jan 24, 2020

I will say one thing however, there's a lot of issues I've been having with next.js and whenever I find the bug posted here the development team always seem to deny any issues.

We don't deny issues. I've already spent over an hour on this particular issue without being able to reproduce as no reproduction was provided.

We ask for a reproduction so that we can add a test in our test suite to ensure it doesn't happen again.

Eg in this case I've asked for a full reproduction 5 times and 1 time it was provided, tried to reproduce based on the steps provided and couldn't reproduce so posted back. Didn't hear back from anyone experiencing the issue since.

In this case, it's not really a bug with next.js, but perhaps advising to clear the cache and rebuild would be more constructive than "Cannot reproduce. Next.js can do no wrong."

Specifically "Next.js can do no wrong"

I've never said that, I've only asked for a reproduction so that we can actually solve the issue you're experiencing.

@Timer Timer closed this as completed Apr 15, 2020
@barayuda
Copy link

Sorry, jump to this.
I faced this same error.
in pages/index.js, I used .map to looping fetch API response and build to Netlify.
When I deploy it, I got this error.
Screenshot below:
http://prnt.sc/tlunq7

@manuarora700
Copy link

Sorry, jump to this.
I faced this same error.
in pages/index.js, I used .map to looping fetch API response and build to Netlify.
When I deploy it, I got this error.
Screenshot below:
http://prnt.sc/tlunq7

I'm facing the same issue on Vercel. I'm trying to map over an array in getStaticPaths and it throws the same error.

@balazsorban44
Copy link
Member

This issue has been automatically locked due to no recent activity. If you are running into a similar issue, please create a new issue with the steps to reproduce. Thank you.

@vercel vercel locked as resolved and limited conversation to collaborators Jan 29, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
please add a complete reproduction The issue lacks information for further investigation
Projects
None yet
Development

No branches or pull requests