我正在开发NextJS应用程序,并且在开发过程中一直使用npm run dev
。现在我正在尝试按GitHub page。
我的应用程序在生产模式中爆炸;似乎生成版本中没有安装cookie-parser
节点中间件?以下是我如何设置它:
server.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-parser
和cookieParser
进行grepping会产生空结果。
知道发生了什么以及如何让cookie-parser
在生产NextJS构建中工作吗?
答案 0 :(得分:0)
Found the answer在同一个GitHub页面上。
将自定义服务器与服务器文件一起使用时,例如调用 server.js,确保将package.json中的脚本密钥更新为:
{
"scripts": {
"dev": "node server.js",
"build": "next build",
"start": "NODE_ENV=production node server.js"
}
}
生产减少了一个问题!