You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次部署项目至Netlify遇构建超时失败问题求助

Netlify部署超时问题:构建耗时过长失败

首次部署项目到Netlify时遇到超时问题,之前的错误都有明确提示已逐一解决,但这次网站体量不大却出现构建超时失败,完全找不到问题根源。

构建日志

12:13:18 AM: Netlify Build                                                  
12:13:18 AM: ────────────────────────────────────────────────────────────────
12:13:18 AM: ​
12:13:18 AM: ❯ Version
12:13:18 AM:   @netlify/build 29.20.12
12:13:18 AM: ​
12:13:18 AM: ❯ Flags
12:13:18 AM:   baseRelDir: true
12:13:18 AM:   buildId: 64febdf8ece3553c9ec203d1
12:13:18 AM:   deployId: 64febdf8ece3553c9ec203d3
12:13:18 AM: ​
12:13:18 AM: ❯ Current directory
12:13:18 AM:   /opt/build/repo
12:13:18 AM: ​
12:13:18 AM: ❯ Config file
12:13:18 AM:   /opt/build/repo/netlify.toml
12:13:18 AM: ​
12:13:18 AM: ❯ Context
12:13:18 AM:   production
12:13:18 AM: ​
12:13:18 AM: build.command from netlify.toml                               
12:13:18 AM: ────────────────────────────────────────────────────────────────
12:13:18 AM: ​
12:13:18 AM: $ npm run dev
12:13:18 AM: > 17@0.0.0 dev
12:13:18 AM: > concurrently --kill-others npm run start npm run scss
12:13:18 AM: [0]
12:13:18 AM: [0] > 17@0.0.0 start
12:13:18 AM: [0] > nodemon ./bin/www
12:13:18 AM: [0]
12:13:18 AM: [1]
12:13:18 AM: [1] > 17@0.0.0 scss
12:13:18 AM: [1] > sass --watch src/scss/main.scss public/stylesheets/style.css
12:13:18 AM: [1]
12:13:18 AM: [0] [nodemon] 3.0.1
12:13:18 AM: [0] [nodemon] to restart at any time, enter `rs`
12:13:18 AM: [0] [nodemon] watching path(s): *.*
12:13:18 AM: [0] [nodemon] watching extensions: js,mjs,cjs,json
12:13:18 AM: [0] [nodemon] starting `node ./bin/www`
12:13:18 AM: [1] Sass is watching for changes. Press Ctrl-C to stop.
12:13:18 AM: [1]
12:31:25 AM: Execution timed out after 18m10.001708592s
12:31:25 AM: Error running command: Command did not finish within the time limit
12:31:25 AM: Failing build: Failed to build site
12:31:26 AM: Finished processing build request in 18m28.601s

项目文件夹结构

├── bin
├── models
├── node_models
├── public
├── routes
├── src/scss
├── views
├── app.js
├── netlify.toml
├── package.json
├── package-lock.json
├── .gitignore
├── README.md

构建设置

构建设置

package.json运行脚本

"scripts": {
    "start": "nodemon ./bin/www",
    "scss": "sass --watch src/scss/main.scss public/stylesheets/style.css",
    "dev": "concurrently --kill-others \"npm run start\" \"npm run scss\""
  },

问题根源与解决办法

你当前使用的dev脚本是开发环境专用命令,它启动了两个持续运行的进程:nodemon(监听文件变化自动重启服务)和带--watch参数的Sass(监听SCSS文件变化自动编译)。而Netlify的构建流程要求构建命令必须是一次性完成的任务,执行完毕后自动退出,才会推进后续部署步骤,这就是导致超时的核心原因。

具体修复步骤:

  1. 更新package.json的脚本配置
    添加生产环境专用的编译和启动命令,替换开发环境的持续监听逻辑:

    "scripts": {
      "start": "nodemon ./bin/www",
      "scss": "sass --watch src/scss/main.scss public/stylesheets/style.css",
      "dev": "concurrently --kill-others \"npm run start\" \"npm run scss\"",
      "build:scss": "sass src/scss/main.scss public/stylesheets/style.css",
      "prod:start": "node ./bin/www"
    }
    
    • build:scss:一次性编译SCSS到CSS,无监听逻辑
    • prod:start:直接用node启动服务,去掉开发用的nodemon
  2. 修改Netlify构建命令
    在Netlify后台构建设置或netlify.toml中,将构建命令从npm run dev改为npm run build:scss,同时指定发布目录为public:
    若用netlify.toml配置,添加如下内容:

    [build]
      command = "npm run build:scss"
      publish = "public"
    
  3. 额外注意事项

    • 生产环境不需要nodemon这类开发工具,直接用node启动服务即可
    • Sass的--watch模式仅用于本地开发,生产构建只需一次性编译
    • 若你的项目是Express服务,Netlify会自动识别并处理服务启动逻辑,无需额外配置

内容的提问来源于stack exchange,提问作者Dagger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:59:58