• Skip to primary navigation
  • Skip to main content
  • Skip to footer

JH Tech Services

A knowledgebase

  • Portfolio
  • Knowledgebase
  • About

node-sass error

August 5, 2019 by jer0dh

Using Node.js version 10.9.1, but when I try to run a gulp process that runs node-sass, I get the following error. The npm rebuild node-sass command does nothing because the binary is actually correct. It is node-sass’s incorrect assumption that I’m running node version 8. I thought a path problem was it but running node –version obtains the version 10.9.1.

I end up changing my node version to 10.16.1, removing my node_modules directory, AND removing the package-lock.json file (I think this is key), and then running npm install. This fixed it for one machine but not on another.

Error I was getting


/home/jer0dh/PhpstormProjects/projectdevelopement/node_modules/node-sass/lib/binding.js:15
      throw new Error(errors.missingBinary());
      ^
Error: Missing binding /home/jer0dh/PhpstormProjects/projectdevelopement/node_modules/node-sass/vendor/linux-x64-57/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 8.x

Found bindings for the following environments:
  - Linux 64-bit with Node.js 10.x

This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass` to download the binding for your current environment.
    at module.exports (/home/jer0dh/PhpstormProjects/projectdevelopement/node_modules/node-sass/lib/binding.js:15:13)
    at Object. (/home/jer0dh/PhpstormProjects/projectdevelopement/node_modules/node-sass/lib/index.js:14:35)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object. (/home/jer0dh/PhpstormProjects/projectdevelopement/node_modules/gulp-sass/index.js:162:21)
jer0dh@jer0dh-ThinkPad:~/PhpstormProjects/projectdevelopement$ node --version
v10.9.0
jer0dh@jer0dh-ThinkPad:~/PhpstormProjects/projectdevelopement$ nvm use 10.16.1
Now using node v10.16.1 (npm v6.9.0)

UPDATE: The above worked for one machine but on another freshly installed linux Mint 19.2 workstation using Visual Code, the above did not help. Found possible solutions: https://stackoverflow.com/questions/44700432/visual-studio-code-to-use-node-version-specified-by-nvm

But it is happening in both the regular terminal and the Visual Code terminal. The path looks right.

/home/jer0dh/.nvm/versions/node/v10.16.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

I am wondering how node-sass determines the current version of node.

$ node --version
v10.16.1

It looks like it is getting it from /usr/bin

$ /usr/bin/node --version
v8.10.0

Yet the PATH shown above clearly shows it should be going directly to nvm node path first.

$ /home/jer0dh/.nvm/versions/node/v10.16.2/bin/node --version
v10.16.1

Without digging deeper down this rabbit hole. Let’s try to update this Linux Mint 19.2 distro with node 10.x using apt-get

We will use https://github.com/nodesource/distributions/blob/master/README.md

Unfortunately, Mint 19.2 “tina” is not supported yet. Only up to 19 “tara”. Added the nodesource tara repository, but getting:

E: The repository 'https://deb.nodesource.com/node_10.x tara Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.

Notice there is a nodejs file in /usr/bin that is a pointer to /usr/bin/node. If I remove the nodejs file, gulp reports:

$ gulp
/usr/bin/gulp: 2: /usr/bin/gulp: /usr/bin/nodejs: not found

If I try to create /usr/bin/nodejs pointing to the v10.16.1 node file, gulp will not work but with a different error.

$ sudo ln -s /home/jer0dh/.nvm/versions/node/v10.16.1/bin/node nodejs

$  gulp
internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module 'gulp-util'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)

If I copy /home/jer0dh/.nvm/versions/v10.16.1/bin/node to /usr/bin, I get the same error above running gulp.

Maybe what happened is that when I installed this box, I may have installed gulp using sudo apt install gulp which probably installed the 8.x version of node to /usr/bin.

As a test I installed Linux Mint Mate 19.0 ‘Tara’ and installed node using only nvm: https://nodesource.com/blog/installing-node-js-tutorial-using-nvm-on-mac-os-x-and-ubuntu/ and installed gulp using only npm install --global gulp-cli. I confirmed that neither node nor gulp were in the /usr/bin directory.

I cloned my project to a directory and ran npm install and then when I ran gulp, it actually worked.

The Solution for me

I went back to my Linux Mint 19.2 install and ran the following to clear out the apt-get installed gulp and node.

sudo apt-get remove gulp
sudo apt-get remove nodejs
sudo apt-get autoremove

I made sure I installed gulp the correct way:

npm install --global gulp-cli

I also made sure node still worked because it is still installed via nvm

Tried out my normal node-sass gulp tasks and….

Success!

Update: Found on another machine I would get the error of /usr/local/bin/gulp: No such file or directory when running gulp Found this stackexchange article fixed it: https://stackoverflow.com/questions/54986239/gulp-usr-local-bin-gulp-no-such-file-or-directory

By adding [[ -s $HOME/.nvm/nvm.sh ]] && . $HOME/.nvm/nvm.sh to my .profile

  • Knowledgebase

Footer

  • Portfolio
  • Knowledgebase
  • About

© 2023