部署未成功:部署目录 'out' 不存在

Deploy did not succeed: Deploy directory 'out' does not exist

将使用Next.js创建的应用程序部署到netlify时,出现以下错误,部署失败。

────────────────────────────────────────────────────────────────
  6. Deploy site                                                
────────────────────────────────────────────────────────────────
​
​
────────────────────────────────────────────────────────────────
  Configuration error                                           
────────────────────────────────────────────────────────────────
​
  Error message
  Deploy did not succeed: Deploy directory 'out' does not exist
​
  Resolved config
  build:
    command: yarn build
    commandOrigin: config
    publish: /opt/build/repo/out
  plugins:
    - inputs: {}
      origin: config
      package: '@netlify/plugin-nextjs'
    - inputs: {}
      origin: config
      package: netlify-plugin-cache-nextjs
Caching artifacts
Started saving node modules
Finished saving node modules
Started saving build plugins
Finished saving build plugins
Started saving yarn cache
Finished saving yarn cache
Started saving pip cache
Finished saving pip cache
Started saving emacs cask dependencies
Finished saving emacs cask dependencies
Started saving maven dependencies
Finished saving maven dependencies
Started saving boot dependencies
Finished saving boot dependencies
Started saving rust rustup cache
Finished saving rust rustup cache
Started saving go dependencies
Finished saving go dependencies
Build failed due to a user error: Build script returned non-zero exit code: 2
Failing build: Failed to build site
Failed during stage 'building site': Build script returned non-zero exit code: 2
Finished processing build request in 1m25.310488139s

各种文件和设置如下所示。

netlify.toml

[build]
  command = "yarn build"
  publish = "out"

[[plugins]]
  package = "@netlify/plugin-nextjs"

[[plugins]]
  package = "netlify-plugin-cache-nextjs"

package.json

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

Netlify |构建设置

各种设置以以下页面为准。

如果你知道如何解决这个问题,请告诉我。
我愿意接受任何想法。

我之前没有用过 Nextjs 和 Netlify,但我认为 Next 的默认构建目录是 .next。这可能是您的部署失败的原因。但是,您可以为您的构建使用自定义目标。

module.exports = {
  distDir: 'out',
}

参考https://nextjs.org/docs/api-reference/next.config.js/setting-a-custom-build-directory

您的 netlify.toml 文件中的构建命令缺少 yarn export。由于 next export 没有被调用,因此 out/ 文件夹将不存在。

[build]
  command = "yarn build && yarn export"
  publish = "out"

...

您可能还需要将 target: 'serverless' 添加到您的 next.config.js 文件中。

如果你得到部署没有成功:部署目录'dist'不存在错误:

package.json 上的构建命令更改为 nuxt generate 或在 netlify 构建设置中使用 nuxt generate 而不是在构建命令中使用 yarn build

然后在 nuxt.config 文件上设置 target: 'serverless'