Fixing Node-Gyp Errors:
One of the more annoying issues of developing on a full stack framework are NodeJS build errors. I just want my static assets! It's not even something important that's broken!
A common issue I've seen when building a project in a CI environment is related to using Node-Sass.
Node-Sass seems to use Node-gyp to compile … something … and fails!
The error is something like this:
gyp ERR! build error
...
gyp ERR! node -v v12.13.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Build failed with error code: 1
...
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.11.0 postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-sass@4.11.0 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
It turns out that Node-gyp is a package used for compiling stuff for NodeJS add-ons. Node-Sass happens to use it to compile native binaries that the project needs to build CSS.
Here's the important part:
The version of Node-Sass used is only compatible with certain versions of Node.
The Node-Sass GitHub page has an extremely important table showing version compatibilities:
What To Do
So, if you see Gyp build errors related to the node-sass
package, you need to ensure your version of Node matches the version of Node-Sass being installed.
Within a CI environment, the fix is usually to make sure you are using the correct NodeJS version (rather than changing the version of Node-Sass).
In Chipper CI, this means setting the Node version in the environment
section of the .chipperci.yml
file (Yaml docs here):
version: 1
# Important part here
environment:
php: 8.1
node: 14 # Node 14 for Node-sass 4.14+, but less than 5.0
services:
pipeline:
- name: Setup
cmd: echo "setting up!"
Make sure those are lined up, and you should be all set!