Adil
Adil

Reputation: 3681

error /node_modules/node-sass: Command failed

When I tried install vue store front in my local but when I tried "yarn install" command I get following error. How can I solve this error? How can I solve this error?

error /var/www/html/vue-storefront/node_modules/node-sass: Command failed.
Exit code: 1
Command: node scripts/build.js
Arguments: 
Directory: /var/www/html/vue-storefront/node_modules/node-sass
Output:
Building: /usr/bin/node /var/www/html/vue-storefront/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
gyp info it worked if it ends with ok
gyp verb cli [
gyp verb cli   '/usr/bin/node',
gyp verb cli   '/var/www/html/vue-storefront/node_modules/node-gyp/bin/node-gyp.js',
gyp verb cli   'rebuild',
gyp verb cli   '--verbose',
gyp verb cli   '--libsass_ext=',
gyp verb cli   '--libsass_cflags=',
gyp verb cli   '--libsass_ldflags=',
gyp verb cli   '--libsass_library='
gyp verb cli ]
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp verb command rebuild []
gyp verb command clean []
gyp verb clean removing "build" directory
gyp verb command configure []
gyp verb check python checking for Python executable "/usr/bin/python3.6" in the PATH
gyp verb `which` succeeded /usr/bin/python3.6 /usr/bin/python3.6
gyp ERR! configure error 
gyp ERR! stack Error: Command failed: /usr/bin/python3.6 -c import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack   File "<string>", line 1
gyp ERR! stack     import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack                                ^
gyp ERR! stack SyntaxError: invalid syntax
gyp ERR! stack 
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:303:12)
gyp ERR! stack     at ChildProcess.emit (events.js:321:20)
gyp ERR! stack     at maybeClose (internal/child_process.js:1026:16)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
gyp ERR! System Linux 4.15.0-88-generic
gyp ERR! command "/usr/bin/node" "/var/www/html/vue-storefront/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /var/www/html/vue-storefront/node_modules/node-sass
gyp ERR! node -v v13.9.0

Upvotes: 314

Views: 426039

Answers (30)

Ricky Dam
Ricky Dam

Reputation: 1895

For my use-case, node-sass is version 6.0.0 and node-gyp was using distutils which couldn't be found.

My version of Python was 3.12.3 on my new M3 MacBook Pro which was too new.

So I downgraded my Python version.

brew unlink [email protected]

brew install [email protected]

brew link [email protected]

python3 --version

This should now display Python 3.9.x

Then yarn cache clean && yarn install ran successfully.

Upvotes: 0

Said-Abdulla Atkaev
Said-Abdulla Atkaev

Reputation: 4323

2024 solution

  1. add .npmrc file.
  2. add python = "/usr/bin/python3" in the .npmrc
  3. yarn install

Thanks @NaceurBouhamed for the comment.

node is the crappiest technology ever for developing :D Starting project is always a nightmare of manually fixing dependencies. – Vasil Valchev

Upvotes: 3

&#194;ngelo Polotto
&#194;ngelo Polotto

Reputation: 9531

I had the same problem and I solved with the steps:

  1. If your are on Apple M1 Chip, run Terminal with Rosetta 2 (optional, only necessary if you have the Node installed with Rosetta)
  2. Check your node-sass version in your package.json and compare with the following table:
NodeJS Supported node-sass version Node Module
Node 20 9.0+ 115
Node 19 8.0+ 111
Node 18 8.0+ 108
Node 17 7.0+, <8.0 102
Node 16 6.0+ 93
Node 15 5.0+ 88
Node 14 4.14+ 83
Node 13 4.13+, <5.0 79
Node 12 4.12+ 72
Node 11 4.10+, <5.0 67
Node 10 4.9+, <6.0 64
Node 8 4.5.3+, <5.0 57
Node <8 <5.0 <57
  1. Check your Node version with: node --version
  2. Install the Nodejs version according with your node-sass, if your are using NVM, run: nvm use DESIRED_VERSION
  3. Clean old node_modules deleting the folder or type this on terminal: rm -rf node_modules
  4. Run: npm install

Resource:

Upvotes: 405

Zulfikar Ahmad
Zulfikar Ahmad

Reputation: 504

if your project has .nvmrc file, then install/use nodejs listed on that file.

inside my .nvmrc file, it's listed v8, so I'm just installing node v8.

.nvmrc is specifying or locking your application with a specific node.js version.

Upvotes: 0

Mohsen
Mohsen

Reputation: 1118

I was using "node-sass": "^4.13.1" in my package.json. I updated to "node-sass": "6.0.0" and it worked. My Node.js version is v16.14.0.

Upvotes: 2

ofir_aghai
ofir_aghai

Reputation: 3311

detect your current npm config python path by run:
$ npm config get python

if it another from your current python path, so change it by run:
$ npm config set python=<YOUR_PYTHON_DIR_PATH>

(for example in my machine it's: C:\python311)

Upvotes: 1

JosephA91
JosephA91

Reputation: 707

For Rails Users

For me this was an easy fix. If you are using nvm, just make sure you have the correct node version installed and in use.

Steps:

  1. Check your node version node -v
  2. If the node version is different to the one your rails project is using then update (example using node 16 but project is using node 14), run nvm use 14
  3. run yarn install

This should work.

Upvotes: 1

Ahmad Reza Azimi
Ahmad Reza Azimi

Reputation: 582

From personal perspective you had better to use:

 yarn add axios

Upvotes: -1

user7554295
user7554295

Reputation: 430

As for me, the issue was resolved after upgrading to the latest v7.0.1. Based on this github issue, node-sass team has fixed it in version 7.0 and above.

I'm using node v16.13.2 and on Apple M1 Chip.

Upvotes: 6

Jackson Lawrence
Jackson Lawrence

Reputation: 1

I had this problem when I was using a newer version of Node (16 via nvm) than my current version of node-sass (4.9) supported. Falling back to Node 10 worked to relieve the issue. Ângelo Polotto's answer has a good compatibility chart to follow.

Upvotes: 0

grefel
grefel

Reputation: 81

Having same issue here. I did

nvm install 14  

because the node-sass version I have in package.json is 4.14.1 then this will display - Now using node v14.19.3 (npm v6.14.17) after I did

yarn install

and it was a success

Upvotes: 8

tronerta
tronerta

Reputation: 492

If it's a Rails project, upgrading webpacker did the job for me.

yarn add @rails/webpacker

Upvotes: 28

If you are getting this error while trying to deploy your project on Heroku, these steps worked for me:

On 16 December 2021, Heroku changed the Node version to 16.13.1 (which was previously 12.16.2). Since we have dependencies such as node-sass v4.14.1 which requires Node v14, we need to specify the Node version Heroku should use.

  • First, we need to use multiple buildpacks, which will specify to install Node first then install Ruby (Read more from Heroku).

Please make you install them in the order below

$ heroku buildpacks:add heroku/nodejs
$ heroku buildpacks:add heroku/ruby
  • Verify that the buildpacks are installed
$ heroku buildpacks

  1. heroku/nodejs
  2. heroku/ruby
  • If buildpacks are not in the order above, remove each of them and add them again. If, for example, ruby comes first, you can just remove it, then add it again as below.
$ heroku buildpacks:remove heroku/ruby

Add it again

$ heroku buildpacks:add heroku/ruby

Now you should have the correct ordering.

{
  ...
  "engines": {
    "node": "14.x"
  },
  ...
}
  • Make sure to run $ yarn install to update your dependencies based on the new Node version.

This happens because your application contains a Yarn lockfile yarn.lock which does not match the dependencies in package.json. This can happen if you use npm to install or update a dependency instead of Yarn.

  • If applicable commit to Git and Deploy!

I found this solution in this article and it worked for me, hope I could help someone

Upvotes: 4

Viktor Ivliiev
Viktor Ivliiev

Reputation: 1334

my solution use node v10.19.0

https://github.com/nodejs/docker-node/issues/1149#issuecomment-552705885

Had a similar problem with /node_modules/node-sass: Command failed on building my application, which also occurred within the last week without any updates on my end.

Had a look at the node-sass docs and the node version on the server and it was using node v12.13.0 and the version of node-sass was 4.9.x.

in the node-sass release docs it lists that for node v12 you need to have node-sass v4.12 and up.

Updating node-sass version corrected the build for me, hope it helps for you too.

node Release docs: https://github.com/sass/node-sass/releases

Upvotes: 5

Tennyson Zvaita
Tennyson Zvaita

Reputation: 9

This happened to me a day after upgrading node. I had to revert to a lower node version. I had upgraded to 16.13.2 from 14.15.4

Upvotes: 0

mondieki
mondieki

Reputation: 1971

For macOS users

If you need to use node-gyp from within npm (e.g. through npm install), you will have to install node-gyp (either globally with -g or to a predictable location) and tell npm where the new version is.

In my case, turns out my project defaulted to using node-gyp v3.8.0 to building my project's modules.

To remedy that, I ran the following commands:

npm config set node_gyp /usr/local/lib/node_modules/node-gyp
npm install

I hope this is insightful for anyone going through the same.

Upvotes: 2

Vik
Vik

Reputation: 5961

Got very strange solutions around after reading the heroku logs.

Initially I have added buildpacks into this order: heroku/ruby heroku/nodejs

enter image description here

But after looking into the complete log and error i have change the order: heroku/nodejs heroku/ruby

enter image description here

After that precompile works nicely.

Upvotes: 0

Yash Maheshwari
Yash Maheshwari

Reputation: 2412

For Vue Storefront 1, you can try using node version 10.16.0 and it will work fine.

Upvotes: 1

omesi37
omesi37

Reputation: 112

On top of the suggested resolutions, I've found that sometimes yarn.lock has a node-gyp locked version for node-sass. When I changed it from 3.8.0 to 8.4.1 everything worked.

Upvotes: 3

Johannes DV
Johannes DV

Reputation: 11

TBH my problem was that I tried to "npm install angular-cli" instead of "npm install @angular/cli", hope this helps other dummies like me :)

Upvotes: 1

dkm
dkm

Reputation: 539

Try installing sass instead of node-sass. It worked well for me.

yarn remove node-sass
yarn add sass

Upvotes: 52

Azeer Esmail
Azeer Esmail

Reputation: 154

i have been facing the same problem for a while now on rails app, and was solved by upgrading webpacker:

# check your Gemfile for version restrictions
bundle update webpacker

# overwrite your changes to the default install files and revert any unwanted changes from the install
rails webpacker:install

# yarn 1 instructions
yarn upgrade @rails/webpacker --latest
yarn upgrade webpack-dev-server --latest

see: https://github.com/rails/webpacker#upgrading

props to chase439 : https://github.com/sass/node-sass/issues/2447

Upvotes: 6

Bryan Mora
Bryan Mora

Reputation: 1

With gulp I got "Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 12.x

Found bindings for the following environments:

  • Linux 64-bit with Unsupported runtime (93)

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."

So I ran npm rebuild node-sass and that worked! Then npm install and everything went ok.

Upvotes: 0

MrJedi2U
MrJedi2U

Reputation: 573

Another option is to update your PATH environment variable to point to Python2 instead of Python3 (remove the Python3 directory from PATH)

Upvotes: 2

Somesh Gupta
Somesh Gupta

Reputation: 321

I changed the node version from 16.0 to 14.x in my package.json file and it worked.

Upvotes: 15

Rick Batera
Rick Batera

Reputation: 29

It's failing because python3 is used here. Create a .npmrc file in the project folder containing python = "/usr/bin/python2.7" and install. According to link, python 3.x.x is not yet supported. – NaceurBouhamed Feb 25 '20 at 12:28

****python = "localpath/python27/python.exe"

RESOLVED

Upvotes: 1

marcamillion
marcamillion

Reputation: 33755

I am running Rails 6 and for some reason it was pulling webpacker 4.3.0 which was pulling node-sass 4.3.0 rather than 6.0.0 which is the latest as of the date of this post.

What worked for me is the following:

  1. Deleting the node_module folder, package-lock.json and yarn.lock
  2. In my package.json, I upgraded rails/webpacker: 5.3.0.
  3. I then re-ran yarn install.
  4. Then I ran yarn add node-sass

That worked like a charm, after trying everything else above.

I believe those were the exact steps, although to be honest I have been trying sooo many things and they didn't work and I finally got it to work so there is a possibility I may have missed a step, but I did my best to re-create it for any future frustrated soul out there.

Upvotes: 90

Eren Yatkin
Eren Yatkin

Reputation: 326

Install node-sass globally with yarn

Or Add node-sass to your project

Upvotes: 5

OzzieFZI
OzzieFZI

Reputation: 112

I ran into this issue when containerising a VueJs app. I was using the node:15.12.0-alpine tag as base image before but the issue was fixed once I changed to the full node image (node:15.12.0) that uses debian-stretch.

Upvotes: 1

Sherllo
Sherllo

Reputation: 176

Solutions here don't work for me. Until I delete the node_modules folder and yarn.lock.

rm -rf node_modules
rm yarn.lock
yarn instal

Upvotes: 10

Related Questions