在问这个问题之前,我看了下面的问题,但我相信我的问题是不同的,因为我没有使用Docker:Nextjs fails to find valid build in the '.next' directory in production node_env
我还尝试了this方法来删除“.Next”文件夹,但仍然遇到了同样的问题。
在修复了一系列其他问题后,我只剩下一个似乎无法解决的问题。当我试图部署到Heroku时,我不断收到以下错误:
node server.js
Could not find a valid build in the '.next' directory! Try building your app with 'next build' before starting the server.
下面是我的package.json文件:
{
"name": "StarterApp",
"version": "1.0.0",
"engines": {
"node": "10.4.1"
},
"description": "",
"main": "index.js",
"scripts": {
"test": "mocha",
"dev": "node server.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "4.16.3",
"fs-extra": "^5.0.0",
"ganache-cli": "^6.1.3",
"mocha": "^5.2.0",
"next": "^4.2.3",
"next-routes": "^1.4.2",
"node-gyp": "^3.7.0",
"react": "^16.4.1",
"react-dom": "^16.4.1",
"rebuild": "^0.1.2",
"semantic-ui-css": "^2.3.2",
"semantic-ui-react": "^0.79.1",
"sha3": "^1.2.2",
"solc": "^0.4.24",
"truffle-hdwallet-provider": "0.0.3",
"web3": "^1.0.0-beta.34"
}
}
服务器. js文件:
const { createServer } = require('http');
const next = require('next');
const app = next({
dev: process.env.NODE_ENV !== 'production'
});
const routes = require('./routes');
const handler = routes.getRequestHandler(app);
app.prepare().then(() => {
createServer(handler).listen(5000, (err) => {
if (err) throw err;
console.log('Ready on localhost:5000');
});
});
应用程序在本地部署没有问题,但我在部署到Heroku时遇到了这个错误。我做错了什么?
6条答案
按热度按时间nzk0hqpo1#
然后
解决了我的问题。
yruzcnhs2#
第一个
然后
xxhby3vn3#
只是仔细看错误:
运行时
它无法找到启动下一个应用程序所需的生产版本。使用
.next文件夹未创建,因此您需要先使用
它将包含所有的生产构建文件。
在npm构建之后,将创建文件夹,您可以使用
此外,请确保这些脚本位于下一个应用程序中
希望这能解决您的错误😀😀
5hcedyr04#
NextJS building可能非常大(取决于您的项目大小),在部署过程中可能会花费您的资金。
ddrv8njm5#
我在设置后尝试从构建目录启动生产服务器时遇到此错误。
实际误差
错误:未能在“/home/username/awesome-app/build/build”目录中找到生产版本。请尝试在启动生产服务器之前使用“下一个版本”生成您的应用。https://nextjs.org/docs/messages/production-start-no-build-id
和启动命令
因此我将下一个build目录移到了另一个名为build的目录中,它可以正常工作,如果您使用环境变量,则将该文件放在build目录中。
zaqlnxep6#
我也有过同样的问题。
首先,删除package-lock.json或yarn.lock文件和node_modules文件夹,并确保使用
yarn
命令重新安装所有软件包。我必须先运行yarn build
,然后yarn start
命令才能正常工作。另外,如果当前使用的端口被另一个应用程序占用,那么你在运行开发环境时会遇到问题。你可以通过进入package.json文件并修改“dev”脚本来轻松解决这个问题,如下所示:
"dev": PORT=7080 next dev"
.也可能您将Next.js与React混合在一起,因为在Next.js中,您应该使用
yarn dev
来启动您的项目进行开发,而不是使用yarn start。我希望这对你有帮助。