1

npm run dev我正在开发一个 NextJS 应用程序,并且在开发过程中一直在使用。现在我正在尝试按照GitHub 页面上的描述进行生产构建。

我的应用程序在生产模式下崩溃了;似乎cookie-parser节点中间件未安装在生产版本中?这是我的设置方式:

服务器.js

const express = require('express');
const next = require('next');
const cookieParser = require('cookie-parser'); // require cookie-parser

const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();

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

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

    server.listen(3000, (err) => {
        if (err) throw err;
        console.log('> Ready on http://localhost:3000');
    });
})
.catch((ex) => {
    console.error(ex.stack);
    process.exit(1);
})

稍后在代码中我访问节点req对象。req.cookies正如我所料,在开发模式中存在。在生产模式下它不存在。

看起来生产构建目录中没有server.js文件。更重要的是cookie-parsercookieParser在所述生产构建目录中搜索并生成空结果。

知道发生了什么以及如何cookie-parser在生产 NextJS 构建中工作吗?

4

1 回答 1

1

在同一个 GitHub 页面上找到了答案。

当使用带有服务器文件的自定义服务器时,例如名为 server.js,请确保将 package.json 中的 scripts 键更新为:

{
  "scripts": {
    "dev": "node server.js",
    "build": "next build",
    "start": "NODE_ENV=production node server.js"
  }
}

生产建设的一个问题!

于 2018-03-16T17:37:25.953 回答