heroku NextJS无法在'.next'目录中找到有效的组建

zy1mlcev  于 2022-11-13  发布在  其他
关注(0)|答案(6)|浏览(161)

在问这个问题之前,我看了下面的问题,但我相信我的问题是不同的,因为我没有使用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时遇到了这个错误。我做错了什么?

nzk0hqpo

nzk0hqpo1#

npm run build

然后

npm run start

解决了我的问题。

yruzcnhs

yruzcnhs2#

第一个

npm run-script build

然后

npm run start
xxhby3vn

xxhby3vn3#

只是仔细看错误:

Error: Could not find a production build in the 'E:\Developer's Area\weatherteller\.next' directory. Try building your app with 'next build' before s    at Server.readBuildId (E:\Developer's Area\weatherteller\node_modules\next\dist\next-server\server\next-server.js:146:355)
    at new Server (E:\Developer's Area\weatherteller\node_modules\next\dist\next-server\server\next-server.js:3:120)
    at createServer (E:\Developer's Area\weatherteller\node_modules\next\dist\server\next.js:2:638)
    at start (E:\Developer's Area\weatherteller\node_modules\next\dist\server\lib\start-server.js:1:323)
    at nextStart (E:\Developer's Area\weatherteller\node_modules\next\dist\cli\next-start.js:19:125)
    at E:\Developer's Area\weatherteller\node_modules\next\dist\bin\next:27:115

运行时

npm start

它无法找到启动下一个应用程序所需的生产版本。使用

npm install next react react-dom --save

.next文件夹未创建,因此您需要先使用

npm build

它将包含所有的生产构建文件。
在npm构建之后,将创建文件夹,您可以使用

npm start

此外,请确保这些脚本位于下一个应用程序中

"scripts": {
    "dev": "next",
    "build": "next build",
    "start": "next start"
  },

希望这能解决您的错误😀😀

5hcedyr0

5hcedyr04#

NextJS building可能非常大(取决于您的项目大小),在部署过程中可能会花费您的资金。

{
    "script": {
        "build": "next build",
        "heroku-postbuild": "npm run build",
        "start": "next start"
    }
}
ddrv8njm

ddrv8njm5#

我在设置后尝试从构建目录启动生产服务器时遇到此错误。

distDir: 'build',

实际误差
错误:未能在“/home/username/awesome-app/build/build”目录中找到生产版本。请尝试在启动生产服务器之前使用“下一个版本”生成您的应用。https://nextjs.org/docs/messages/production-start-no-build-id
和启动命令

$ next start build

因此我将下一个build目录移到了另一个名为build的目录中,它可以正常工作,如果您使用环境变量,则将该文件放在build目录中。

zaqlnxep

zaqlnxep6#

我也有过同样的问题。
首先,删除package-lock.jsonyarn.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。
我希望这对你有帮助。

相关问题