我已经设置了一个express.js + next.js app
,它在开发环境中运行良好。当我尝试运行其webpack
捆绑包时,它的抛出错误
Error: Cannot find module '/Users/user/workspace/project/next.config.js'
我正在尝试运行它的捆绑包,因为aws-lamda
不允许我上传超过 50MB 的 zip 大小。
// server.js
const express = require('express');
const argv = require('yargs').argv;
const nextApp = require('./nextApp.js');
const handle = nextApp.getRequestHandler();
const pageRoutes = require('./routes/pages/index.js');
const port = argv.port || 3000;
const server = express();
// route to next.js web pages
server.use('/', pageRoutes);
server.get('*', (req, res) => {
return handle(req, res)
});
nextApp.prepare()
.then(() => {
server.listen(port, (err) => {
if (err) throw err
console.log(`> Ready on http://localhost:${port}`)
});
})
.catch((ex) => {
console.error(ex.stack)
process.exit(1)
});
module.exports = server;
到目前为止
,我发现我们可以/应该扩展next.config.js以添加额外的捆绑条目,而不是创建一个单独的webpack.config.js。以下配置将在构建/服务器目录中创建一个服务器捆绑.js文件。
const merge = require('webpack-merge');
module.exports = {
distDir: 'build',
webpack (config, {isServer}) {
if (isServer) {
return merge(config, {
entry () {
return config.entry().then((entry) => {
return Object.assign({}, entry, { serverbundle: './server' })
})
},
output: {
filename: '[name].js'
}
});
}
return config;
}
}