NextJS 在“.next”目录中找不到有效的构建

Posted

技术标签:

【中文标题】NextJS 在“.next”目录中找不到有效的构建【英文标题】:NextJS cannot find a valid build in the '.next' directory 【发布时间】:2018-11-29 12:54:52 【问题描述】:

在问这个问题之前,我查看了以下问题,但我相信我的问题不同,因为我没有使用 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"
  

Server.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 时出现此错误。我究竟做错了什么?

【问题讨论】:

您必须先创建一个构建。在“npm start”之前运行“next build” 嘿!我的服务器文件看起来相同。你没碰巧上过 Stephen Griders Ethereum/Solidity 课程吧?如果是这样,我有一些编译/部署的自动化,你应该检查一下。 @NikHammer-Ellis 抱歉耽搁了这么久!不知怎的错过了这个!我在哪里可以查看?谢谢! 【参考方案1】:
npm run build

然后

npm run start

解决了我的问题。

【讨论】:

是的,这对我有用。非常感谢。【参考方案2】:

第一

npm run-script build

然后

npm run start

【讨论】:

欢迎来到 Stack Overflow!请详细说明或分享有关您的答案的一些细节。 很遗憾看到评论者没有详细说明,但有一件事是肯定的:在我的 Windows 10 环境中,使用官方的 create-next-app,他的答案是这里唯一一个工作。【参考方案3】:

仔细看错误:

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 文件夹未创建,因此您需要先使用创建 .next 文件夹

npm build

这将包含您的所有生产构建文件。

在 npm build 之后,文件夹将被创建,您可以使用运行您的应用程序

npm start

另外,请确保这些脚本在您的下一个应用中

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

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

【讨论】:

【参考方案4】:

NextJS 构建可能(取决于您的项目规模)非常大,在部署期间可能会花费您的资金。 您可以将以下内容应用于您的package.json


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

【讨论】:

【参考方案5】:

设置后尝试从构建目录启动生产服务器时出现此错误。

  distDir: 'build',

实际错误

错误:在“/home/username/awesome-app/build/build”目录中找不到生产版本。在启动生产服务器之前尝试使用“下一个构建”构建您的应用程序。 https://nextjs.org/docs/messages/production-start-no-build-id

还有我的启动命令

$ next start build

所以我将下一个构建目录移动到另一个名为 build 的目录并且它可以工作,如果您使用环境变量,则将该文件放入构建目录中。

【讨论】:

【参考方案6】:

Mahendra pratap 的回答完全适合我!

只是使用了 yarn 而不是 npm 的区别

【讨论】:

如果只是指出另一个答案是正确的,则无需添加另一个答案

以上是关于NextJS 在“.next”目录中找不到有效的构建的主要内容,如果未能解决你的问题,请参考以下文章

错误:在 next.js 中找不到模块“swiper/react”

在 Next.js 应用程序中找不到 API 路由(找不到该页面)

如何在 nextjs 组件中使用 next-auth?

Storybook 在 React、Next.JS、Typescript 项目中找不到组件

Nextjs 动态路由与 next-i18next 构建错误

next.js + GraphQL:“不变违规:在上下文中找不到“客户端”或作为选项传入......”