Netlify Deploy Command failed with exit code 254: npm run build-studio && cp studio/netlify.toml studio/dist

Please help! I’m a newb! Trying to launch my first site using Sanity’s Gatsby portfolio template. It deployed just fine the first time, then I did some edits and now it fails with “Command failed with exit code 254: npm run build-studio && cp studio/netlify.toml studio/dist”. The site has always built and run locally with no issues.

I’ve tried many things, like deleting package-lock.json &/or node_modules folder in the root as well as in the studio and web folders and running “npm install” again. Tried “npm update” in root and studio and web folders. Tried tinkering with the postinstall script in the root folder’s package.json file. Tried running “npm install --force --legacy-peer-deps”. Tried cleaning my cache in root, studio and web folders. Basically tried everything I saw in the Netlify forums and elsewhere when googling my issue…

Here is the github repo: https://github.com/ericerodgers/portfolio.

Here is where the deploy seems to break:
11:01:47 PM: lerna info Installing external dependencies
11:04:48 PM: lerna ERR! npm ci exited 254 in ‘sanity-gatsby-portfolio-studio’
11:04:48 PM: lerna ERR! npm ci stderr:
11:04:48 PM: npm WARN tarball tarball data for which-module@https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz (sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=) seems to be corrupted. Trying again.

Here is the error message after lines and lines of “npm WARN tarball tarball data…”:
11:04:48 PM: “build.command” failed
11:04:48 PM: ────────────────────────────────────────────────────────────────
11:04:48 PM: ​
11:04:48 PM: Error message
11:04:48 PM: Command failed with exit code 254: npm run build-studio && cp studio/netlify.toml studio/dist
11:04:48 PM: ​
11:04:48 PM: Error location
11:04:48 PM: In Build command from Netlify app:
11:04:48 PM: npm run build-studio && cp studio/netlify.toml studio/dist
11:04:48 PM: ​
11:04:48 PM: Resolved config
11:04:48 PM: build:
11:04:48 PM: base: /opt/build/repo
11:04:48 PM: command: npm run build-studio && cp studio/netlify.toml studio/dist
11:04:48 PM: commandOrigin: ui
11:04:48 PM: environment:
11:04:48 PM: - NETLIFY_BUILD_DEBUG
11:04:48 PM: publish: /opt/build/repo/studio/dist
11:04:48 PM: publishOrigin: ui

Here is the full deploy log (minus a large chunk of the “npm WARN tarball tarball data…” lines)

11:01:15 PM: Build ready to start
11:01:25 PM: build-image version: fa439ad1ab9393b2c0d449d8d7c033927683f4b0
11:01:25 PM: build-image tag: v4.3.0
11:01:25 PM: buildbot version: bfa1ece451875e5fe124c5b0a59bb85e0abb8d50
11:01:25 PM: Fetching cached dependencies
11:01:25 PM: Starting to download cache of 147.2MB
11:01:27 PM: Finished downloading cache in 1.527898759s
11:01:27 PM: Starting to extract cache
11:01:32 PM: Finished extracting cache in 5.608708305s
11:01:32 PM: Finished fetching cache in 7.332795262s
11:01:32 PM: Starting to prepare the repo for build
11:01:33 PM: Preparing Git Reference refs/heads/main
11:01:34 PM: Parsing package.json dependencies
11:01:34 PM: 
​
❯ Initial build environment
baseRelDir: true
branch: main
context: production
cwd: /opt/build/repo
featureFlags: []
mode: buildbot
repositoryRoot: /opt/build/repo
siteId: 0e615e6e-e933-48da-a5c5-0e7c3826be41
​
❯ UI build settings
baseRelDir: true
build:
  base: /
  command: npm run build-studio && cp studio/netlify.toml studio/dist
  environment:
    - NETLIFY_BUILD_DEBUG
  publish: /studio/dist
​
❯ Resolved build environment
branch: main
buildDir: /opt/build/repo
context: production
env: []
​
❯ Resolved config
build:
  base: /opt/build/repo
  command: npm run build-studio && cp studio/netlify.toml studio/dist
  commandOrigin: ui
  environment:
    - NETLIFY_BUILD_DEBUG
  publish: /opt/build/repo/studio/dist
  publishOrigin: ui

11:01:34 PM: Different build dir detected, going to use the one specified in the Netlify configuration file: '' versus '/' in the Netlify UI
11:01:34 PM: Different publish path detected, going to use the one specified in the Netlify configuration file: 'studio/dist' versus '/studio/dist' in the Netlify UI
11:01:35 PM: Starting build script
11:01:35 PM: Installing dependencies
11:01:35 PM: Python version set to 2.7
11:01:35 PM: Started restoring cached node version
11:01:39 PM: Finished restoring cached node version
11:01:40 PM: v16.9.1 is already installed.
11:01:40 PM: Now using node v16.9.1 (npm v7.21.1)
11:01:41 PM: Started restoring cached build plugins
11:01:41 PM: Finished restoring cached build plugins
11:01:41 PM: Attempting ruby version 2.7.2, read from environment
11:01:43 PM: Using ruby version 2.7.2
11:01:43 PM: Using PHP version 8.0
11:01:43 PM: Started restoring cached node modules
11:01:43 PM: Finished restoring cached node modules
11:01:43 PM: Started restoring cached go cache
11:01:43 PM: Finished restoring cached go cache
11:01:44 PM: go version go1.16.5 linux/amd64
11:01:44 PM: go version go1.16.5 linux/amd64
11:01:44 PM: Installing missing commands
11:01:44 PM: Verify run directory
11:01:45 PM: ​
11:01:45 PM: ────────────────────────────────────────────────────────────────
11:01:45 PM:   Netlify Build                                                 
11:01:45 PM: ────────────────────────────────────────────────────────────────
11:01:45 PM: ​
11:01:45 PM: ❯ Version
11:01:45 PM:   @netlify/build 18.8.0
11:01:45 PM: ​
11:01:45 PM: ❯ Flags
11:01:45 PM:   apiHost: api.netlify.com
11:01:45 PM:   baseRelDir: true
11:01:45 PM:   branch: main
11:01:45 PM:   buildId: 613d6d7bf1748000085c421b
11:01:45 PM:   buildbotServerSocket: /tmp/netlify-buildbot-socket
11:01:45 PM:   cacheDir: /opt/build/cache
11:01:45 PM:   cachedConfigPath: /tmp/netlify_config.json
11:01:45 PM:   context: production
11:01:45 PM:   cwd: /opt/build/repo
11:01:45 PM:   deployId: 613d6d7bf1748000085c421d
11:01:45 PM:   featureFlags:
11:01:45 PM:     - zisiEsbuildDynamicImports
11:01:45 PM:   framework: unknown
11:01:45 PM:   functionsDistDir: /tmp/zisi-613d6d7bf1748000085c421d
11:01:45 PM:   mode: buildbot
11:01:45 PM:   nodePath: /opt/buildhome/.nvm/versions/node/v16.9.1/bin/node
11:01:45 PM:   repositoryRoot: /opt/build/repo
11:01:45 PM:   saveConfig: true
11:01:45 PM:   sendStatus: true
11:01:45 PM:   siteId: 0e615e6e-e933-48da-a5c5-0e7c3826be41
11:01:45 PM:   statsd:
11:01:45 PM:     host: datadog-agent
11:01:45 PM:     port: 8125
11:01:45 PM:   testOpts:
11:01:45 PM:     silentLingeringProcesses: ''
11:01:45 PM: ​
11:01:45 PM: ❯ Current directory
11:01:45 PM:   /opt/build/repo
11:01:45 PM: ​
11:01:45 PM: ❯ Config file
11:01:45 PM:   No config file was defined: using default values.
11:01:45 PM: ​
11:01:45 PM: ❯ Resolved config
11:01:45 PM:   build:
11:01:45 PM:     base: /opt/build/repo
11:01:45 PM:     command: npm run build-studio && cp studio/netlify.toml studio/dist
11:01:45 PM:     commandOrigin: ui
11:01:45 PM:     environment:
11:01:45 PM:       - NETLIFY_BUILD_DEBUG
11:01:45 PM:     publish: /opt/build/repo/studio/dist
11:01:45 PM:     publishOrigin: ui
11:01:45 PM: ​
11:01:45 PM: ❯ Context
11:01:45 PM:   production
11:01:45 PM: ​
11:01:45 PM: ────────────────────────────────────────────────────────────────
11:01:45 PM:   1. Build command from Netlify app                             
11:01:45 PM: ────────────────────────────────────────────────────────────────
11:01:45 PM: ​
11:01:45 PM: $ npm run build-studio && cp studio/netlify.toml studio/dist
11:01:46 PM: > sanity-gatsby-portfolio@0.0.0 build-studio
11:01:46 PM: > lerna bootstrap && (cd studio && npm run build)
11:01:46 PM: lerna notice cli v4.0.0
11:01:46 PM: lerna info ci enabled
11:01:47 PM: lerna info Bootstrapping 2 packages
11:01:47 PM: lerna info Installing external dependencies
11:04:48 PM: lerna ERR! npm ci exited 254 in 'sanity-gatsby-portfolio-studio'
11:04:48 PM: lerna ERR! npm ci stderr:
11:04:48 PM: npm WARN tarball tarball data for which-module@https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz (sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=) seems to be corrupted. Trying again.
11:04:48 PM: npm WARN tarball tarball data for normalize-path@https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz (sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=) seems to be corrupted. Trying again.
11:04:48 PM: npm ERR! code ENOENT
11:04:48 PM: npm ERR! syscall lstat
11:04:48 PM: npm ERR! path /opt/buildhome/.npm/_cacache/content-v2/sha1/b5/24/3d8f3ec1aa35f1364605bc0d1036e30ab69f
11:04:48 PM: npm ERR! errno -2
11:04:48 PM: npm ERR! enoent ENOENT: no such file or directory, lstat '/opt/buildhome/.npm/_cacache/content-v2/sha1/b5/24/3d8f3ec1aa35f1364605bc0d1036e30ab69f'
11:04:48 PM: npm ERR! enoent This is related to npm not being able to find a file.
11:04:48 PM: npm ERR! enoent
11:04:48 PM: npm ERR! A complete log of this run can be found in:
11:04:48 PM: npm ERR!     /opt/buildhome/.npm/_logs/2021-09-12T03_04_47_826Z-debug.log
11:04:48 PM: lerna ERR! npm ci exited 254 in 'sanity-gatsby-portfolio-studio'
11:04:48 PM: ​
11:04:48 PM: ────────────────────────────────────────────────────────────────
11:04:48 PM:   "build.command" failed                                        
11:04:48 PM: ────────────────────────────────────────────────────────────────
11:04:48 PM: ​
11:04:48 PM:   Error message
11:04:48 PM:   Command failed with exit code 254: npm run build-studio && cp studio/netlify.toml studio/dist
11:04:48 PM: ​
11:04:48 PM:   Error location
11:04:48 PM:   In Build command from Netlify app:
11:04:48 PM:   npm run build-studio && cp studio/netlify.toml studio/dist
11:04:48 PM: ​
11:04:48 PM:   Resolved config
11:04:48 PM:   build:
11:04:48 PM:     base: /opt/build/repo
11:04:48 PM:     command: npm run build-studio && cp studio/netlify.toml studio/dist
11:04:48 PM:     commandOrigin: ui
11:04:48 PM:     environment:
11:04:48 PM:       - NETLIFY_BUILD_DEBUG
11:04:48 PM:     publish: /opt/build/repo/studio/dist
11:04:48 PM:     publishOrigin: ui
11:04:48 PM: Caching artifacts
11:04:48 PM: Started saving node modules
11:04:48 PM: Finished saving node modules
11:04:48 PM: Started saving build plugins
11:04:48 PM: Finished saving build plugins
11:04:48 PM: Started saving pip cache
11:04:48 PM: Finished saving pip cache
11:04:48 PM: Started saving emacs cask dependencies
11:04:48 PM: Finished saving emacs cask dependencies
11:04:48 PM: Started saving maven dependencies
11:04:48 PM: Finished saving maven dependencies
11:04:48 PM: Started saving boot dependencies
11:04:48 PM: Finished saving boot dependencies
11:04:48 PM: Started saving rust rustup cache
11:04:48 PM: Finished saving rust rustup cache
11:04:48 PM: Started saving go dependencies
11:04:48 PM: Finished saving go dependencies
11:04:48 PM: Build failed due to a user error: Build script returned non-zero exit code: 2
11:04:48 PM: Failing build: Failed to build site
11:04:48 PM: Finished processing build request in 3m23.585558362s

Hi @ericerodgers

a) Not sure why you are copying the netlify.toml into dist.
b) The netlify.toml in studio is incorrectly formatted.
It reads

CI= npm run build

when it should read

[build]
  command = "CI= npm run build"

I still see it in the project root as well as in studio which also contains a yarn.lock.

I was able to build your code locally without error.

I have forked your repository, removed package-lock.json, yarn.lock, netlify.toml files and as with you, tried various values to get it to build.

In the end, I managed to get it to build.

These are the build settings I used:

Notice I set the Base directory to studio. npm run build then runs the build command in the package.json in that directory. Speaking of which, I modified that, removing the lerna bootstrap. Lastly I added the environment variable NPM_FLAGS with the value --force as there is a dependency issue with the sanity version as you can see in build log agitated-kowalevski-2cc360/deploys/613dbba3ed232afb2b2fb3e7.

The successful build log: agitated-kowalevski-2cc360/deploys/613dbc529b3eb4f59b2d73bf
The build is available at 613dbc529b3eb4f59b2d73bf–agitated-kowalevski-2cc360.netlify.app however doesn’t work as that domain is not on the allowed list.

Ideally you would try to avoid issue with dependency versions, matching them up.

Hope this gives you something to work with.

My fork coelmay/portfolio if you wish to look.

1 Like

WOW thanks so much @coelmay!

As a beginner, I really appreciate your clear, straightforward response. I implemented your changes exactly as you specified to my files and to the Netlify UI, I think(?), and they didn’t work for me… so maybe I didn’t get it quite right? When I pushed my root portfolio folder to github to trigger the studio and web builds, it only the deployed the web build, but that failed, and it looked like it was attempting to build itself as a sanity studio instead of as the gatsby site or something… Anyway, your advice and suggestions definitely put me on the right path and I played around with things for a while and was able to get both the website and the sanity studio to deploy successfully. So, thank you!

In the end, here’s what worked for me: I made your suggested edit to the netlify.toml file, I removed “&& lerna bootstrap” from the studio build script, and I deleted the yarn.lock file. I left all the package-lock.json files in place, as well as the updated netlify.toml file. I returned the Netlify UI settings to the way I had them before. I deployed from the root portfolio folder with these changes and the sanity studio build completed, but the gatsby website failed with some error codes indicating problems with the sanity schema… In the Sanity.io UI I saw an error message asking if I wanted to delete a schema I thought I’d already successfully deleted, and I confirmed the delete. I redeployed graphql locally and redeployed the site one last time and now everything works!

I hope my explanations here have been clear enough for anyone else who might encounter this problem… I don’t really know how or why I had a yarn.lock file or why the studio build script include “lerna bootstrap”, I didn’t really do very major alterations to the sanity/gatsby portfolio template I found on sanity.io… I mainly just added new content.

Thanks again @coelmay, my first ever website is now successfully up and running with a functional sanity CMS. I still plan to make some changes but I’m pretty happy with it for now! Check it out: https://ericrodgers.io

2 Likes

Hey there, @ericerodgers :wave:

Welcome to the Netlify Forums! Thanks so much for sharing such a clear and detailed summary of the steps you took to get your first site deployed! What an exciting milestone! We can’t wait to see what you continue to build :netliconfetti: