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

时间:2021-02-24 15:06:09

标签: deployment next.js netlify

使用Next.js创建的app部署到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 |构建设置
congif

各种设置基于以下页面。

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

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:2)

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

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

...