274

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 node-gyp@3.8.0
gyp info using node@13.9.0 | 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
CoryCoolguy
  • 1,065
  • 8
  • 18
Adil
  • 3,241
  • 3
  • 11
  • 9
  • 14
    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](https://www.npmjs.com/package/node-gyp/v/3.8.0#on-unix), python 3.x.x is not yet supported. – NaceurBouhamed Feb 25 '20 at 12:28
  • 3
    Hi @NaceurBouhamed, I tried it but it's not working and giving same error – Adil Feb 26 '20 at 07:10
  • I got the same issue on node alpine image, if it helps https://github.com/nodejs/docker-node/issues/282 – Mauricio Apr 19 '21 at 12:14
  • 8
    node is the crappiest technology ever for developing :D Starting project is always a nightmare of manually fixing dependencies. – Vasil Valchev Jun 24 '22 at 08:00

32 Answers32

350

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:

Ângelo Polotto
  • 8,463
  • 2
  • 36
  • 37
  • 2
    I am running Angular and updating my node-sass in package.json to 6.0.1 to match my node 16... that did the trick. – Wellspring Jul 28 '21 at 23:01
  • 4
    Thanks! that was a good hint. I had to downgrade my node version and it worked. – Diana Jul 30 '21 at 09:11
  • 1
    Thanks Angelo! i downgraded my node from 17 to 13 and now it runs. I'm waiting until the day Rails 7 is out and we get rid of that webpacker! seems that node-sass is not the only one old package on it – chmich Dec 09 '21 at 21:51
  • 1
    Using bootstrap-npm-starter. Upgraded node-sass in package.json to ^6.0.0 did the trick! Thank you. – JClarkCDS Jan 29 '22 at 08:26
  • 1
    Depends a lot on which context you need it. My Vue.js solution didn't run `npm i` with node 16 and I had to downgrade it to node 14. Thanks for the post! – Sergiu Mare Mar 22 '22 at 08:57
  • 1
    thanks a lot. you should check node version ( node -v ) then install equivalent node-sass version according above table. In my case I constrained to downgrade node from 16 to 14 – Omid Rahimi Apr 28 '22 at 14:38
  • If you are on Rails 6 you might be using Webpacker (@rails/webpacker) 5.4.3 or below. This gem includes node-sass as a dependency stuck to version ^4.14.1, so you won't see it directly in `package.json` but you will find it as a dependency of @rails/webpacker in `package.json-lock`. As according to this correct answer, you would then need to use the lower version of Node (14) to be compatible. – Jason FB Nov 07 '22 at 20:33
  • In this answer, the "+" symbols are incorrect-- they imply that later versions of Node are backward compatible, but they are not, leading precisely to the original issue: If you are on node-sass v 5.0, you need to downgrade to Node 15. If you are on node-sass v 4, you need to downgrade to Node 14, etc – Jason FB Nov 07 '22 at 20:35
  • I'm not the author of this table, I got it from Node SASS NPM docs https://www.npmjs.com/package/node-sass . And the "+", for me, it's the latest small version, for example, 6.0+ can be 6.1, 6.2, ... so on, but not 7.0. – Ângelo Polotto Nov 08 '22 at 12:58
  • THis looks like a recurring problem forever. node_sass should at least provide a message if this happens which node version it is compatible with. – chitgoks May 16 '23 at 02:39
175

I had the same issue upgraded the node-sass version to be the same as node version. with yarn just run:

yarn add node-sass

this will upgrade the version and fix the issue

basel juma
  • 1,987
  • 1
  • 10
  • 5
81

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.

Dharman
  • 30,962
  • 25
  • 85
  • 135
marcamillion
  • 32,933
  • 55
  • 189
  • 380
47

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

yarn remove node-sass
yarn add sass
dkm
  • 489
  • 4
  • 3
  • This should be #1 pick. node 18 is stable so downgrading to anything below is security risk as of 2023. Here is deeper explanation of above solution: [http://write.w5hnews.com/u/cwSNkeLNXf#Solved-ERR!gyp-info-using-node-gyp-3.8.0-gyp-verb-which-failed-Error-not-found-python2] – Lucas S. Jan 09 '23 at 19:57
25

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

yarn add @rails/webpacker
tronerta
  • 432
  • 6
  • 12
19

Just upgrade your sass version in your yarn.lock file. For node 14 the appropriate version for node-sass is 4.14.
So adapt to your node version.

m02ph3u5
  • 3,022
  • 7
  • 38
  • 51
  • 1
    This didn't quite get there for node 16 - my `package.json` specified `webpacker v4.3.0` and it includes node-sass as a dependency. Updating `webpacker` to `5.3.0` was the solution for me. – bitfidget May 13 '21 at 05:01
15

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

Somesh Gupta
  • 324
  • 3
  • 13
10

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
Sherllo
  • 166
  • 1
  • 10
  • In my case it was a sub dependancy and not even listed into package.json. The issue was into yarn.lock / package-lock.json. It seems to be a common issue when reviving projects from the github graveyard – Alsushi Oct 04 '21 at 13:05
8

Faced the same issue. If you look at the error stack, it says:

Error: Command failed: /usr/bin/python3.6 -c import sys; print "%s.%s.%s" % sys.version_info[:3];
   File "<string>", line 1
     import sys; print "%s.%s.%s" % sys.version_info[:3];
                                ^
 SyntaxError: invalid syntax

It's trying to use Python2 but instead uses Python3 which is not supported.

My system runs Python3 when called using the python command, so I fixed this by installing Python2 and aliasing it to the python command:

alias python=pyhton2.7
saud
  • 678
  • 1
  • 12
  • 24
6

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

Azeer Esmail
  • 124
  • 2
  • 3
6

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

Tyler2P
  • 2,324
  • 26
  • 22
  • 31
grefel
  • 61
  • 1
  • 3
6

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.

user7554295
  • 420
  • 5
  • 11
5

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

Viktor Ivliiev
  • 1,015
  • 4
  • 14
  • 21
  • I encountered this issue trying to replicate a site on EC2 - this made me think to double check I had installed the same version of Node that was used to develop the site. I had not. – Orchis Jan 12 '21 at 15:41
3

Install node-sass globally with yarn

Or Add node-sass to your project

Sam
  • 4,437
  • 11
  • 40
  • 59
Eren Yatkin
  • 186
  • 2
  • 9
  • 1
    Hi @Eren I have tried it but it gives me same error – Adil Feb 26 '20 at 07:08
  • @Adil I downloaded the sample in this repo [StoreFront](https://github.com/DivanteLtd/vue-storefront) and simply called `npm install` did not throw an error. Actually I'm not a yarn expert but you can also try clean yarn's cached and globally downloaded files and re- install `yarn`. By the way I'm using macOs Catalina. – Eren Yatkin Feb 26 '20 at 07:46
  • Thanks for your info. Actually I used nodejs with magento2 in other way and it is working fine – Adil Jul 03 '20 at 11:38
3

I solved this issue by installing the python 2.7 version on windows os.I had Python 3 installed before. This error happens because of the python version 3.

Kamal Ahmed
  • 233
  • 3
  • 9
3

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.

omesi37
  • 112
  • 8
3

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

2

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

MrJedi2U
  • 348
  • 2
  • 7
2

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.

mondieki
  • 1,771
  • 3
  • 16
  • 24
2

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.

Mohsen
  • 971
  • 2
  • 11
  • 29
1

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.

OzzieFZI
  • 76
  • 4
1

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

1

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 :)

1

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

Yash Maheshwari
  • 1,842
  • 2
  • 7
  • 16
1

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.

JosephA91
  • 487
  • 3
  • 10
1

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)

ofir_aghai
  • 3,017
  • 1
  • 37
  • 43
0

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.

0

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.

Vik
  • 5,931
  • 3
  • 31
  • 38
0

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

0

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.

0

From personal perspective you had better to use:

 yarn add axios
Ahmad Reza Azimi
  • 534
  • 5
  • 16
0

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.

Zulfikar Ahmad
  • 407
  • 1
  • 7
  • 18