Compile Node JS error after creating new phoenix project

mix phx.new discuss

Compiled without these two things something like that

cd assets 
cd assets && npm install && node node_modules/webpack/bin/webpack.js --mode development

After running the command to build and install node dep. I got error


npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm ERR! code 1
npm ERR! path /home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/node-sass
npm ERR! command failed
npm ERR! command sh -c node scripts/build.js
npm ERR! Building: /usr/bin/node /home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --l
ibsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp verb cli [
npm ERR! gyp verb cli   '/usr/bin/node',
npm ERR! gyp verb cli   '/home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/node-gyp/bin/node-gyp.js',
npm ERR! gyp verb cli   'rebuild',
npm ERR! gyp verb cli   '--verbose',
npm ERR! gyp verb cli   '--libsass_ext=',
npm ERR! gyp verb cli   '--libsass_cflags=',
npm ERR! gyp verb cli   '--libsass_ldflags=',
npm ERR! gyp verb cli   '--libsass_library='
npm ERR! gyp verb cli ]
npm ERR! gyp info using node-gyp@3.8.0
npm ERR! gyp info using node@16.0.0 | linux | x64
npm ERR! gyp verb command rebuild []
npm ERR! gyp verb command clean []
npm ERR! gyp verb clean removing "build" directory
npm ERR! gyp verb command configure []
npm ERR! gyp verb check python checking for Python executable "python2" in the PATH
npm ERR! gyp verb `which` failed Error: not found: python2
npm ERR! gyp verb `which` failed     at getNotFoundError (/home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/which/which.js:13:12)
npm ERR! gyp verb `which` failed     at F (/home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/which/which.js:68:19)
npm ERR! gyp verb `which` failed     at E (/home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/which/which.js:80:29)
npm ERR! gyp verb `which` failed     at /home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/which/which.js:89:16
npm ERR! gyp verb `which` failed     at /home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/isexe/index.js:42:5
npm ERR! gyp verb `which` failed     at /home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/isexe/mode.js:8:5
npm ERR! gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:194:21)
npm ERR! gyp verb `which` failed  python2 Error: not found: python2
npm ERR! gyp verb `which` failed     at getNotFoundError (/home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/which/which.js:13:12)
npm ERR! gyp verb `which` failed     at F (/home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/which/which.js:68:19)
npm ERR! gyp verb `which` failed     at E (/home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/which/which.js:80:29)
npm ERR! gyp verb `which` failed     at /home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/which/which.js:89:16
npm ERR! gyp verb `which` failed     at /home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/isexe/index.js:42:5
npm ERR! gyp verb `which` failed     at /home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/isexe/mode.js:8:5
npm ERR! gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:194:21) {
npm ERR! gyp verb `which` failed   code: 'ENOENT'
npm ERR! gyp verb `which` failed }
npm ERR! gyp verb check python checking for Python executable "python" in the PATH
npm ERR! gyp verb `which` succeeded python /usr/bin/python
npm ERR! gyp ERR! configure error  
npm ERR! gyp ERR! stack Error: Command failed: /usr/bin/python -c import sys; print "%s.%s.%s" % sys.version_info[:3];
npm ERR! gyp ERR! stack   File "<string>", line 1
npm ERR! gyp ERR! stack     import sys; print "%s.%s.%s" % sys.version_info[:3];
npm ERR! gyp ERR! stack                       ^
npm ERR! gyp ERR! stack SyntaxError: invalid syntax
npm ERR! gyp ERR! stack  
npm ERR! gyp ERR! stack     at ChildProcess.exithandler (node:child_process:326:12)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:365:28)
npm ERR! gyp ERR! stack     at maybeClose (node:internal/child_process:1067:16)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5)
npm ERR! gyp ERR! System Linux 5.10.34-1-MANJARO
npm ERR! gyp ERR! command "/usr/bin/node" "/home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
"--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
npm ERR! gyp ERR! cwd /home/vibhi/Documents/Practice Code/elixir/natour/assets/node_modules/node-sass
npm ERR! gyp ERR! node -v v16.0.0
npm ERR! gyp ERR! node-gyp -v v3.8.0
npm ERR! gyp ERR! not ok  
npm ERR! Build failed with error code: 1

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vibhi/.npm/_logs/2021-05-18T17_32_15_209Z-debug.log

would be nice if someone can help me ?

I checked a blog who wrote a solution for this but that did not work either
Here is the link

1 Like

The issue is that the node-sass library, which is used to compile .scss files to .css, was deprecated, and webpack now breaks because of that. The solution would be to remove node-sass from package.json and replace it with sass. It may be required to update webpack too. Maybe npm upgrade is of use here?

The error you’re getting is from before or after you tried the solution in the blog? If it’s from before, what’s the error you get after following the blog post?

Another alternative would be to pin the webpack version, ie change the webpack version in package.json to "webpack": "^4.41.5"

This issue should be fixed in the upcoming Phoenix release, but I don’t know what’s the release date.

3 Likes

Thank You for explanation I will try your solution and will let you know if its fixes the Porblem or not.

its before i tried the solution,

I forgot the actual log but i will redo the whole thing again.

Good hear at least it will be fixed.

Thank You very much, i Just replaced node-sass with sass: “^1.32.13” and it worked with out any issue.

2 Likes

@Vaibhav I was reading your other thread with interest, and I wanted to point out that asset management is an area where dependency issues tend to pop up regularly in all frameworks.

This issue in particular is very reminiscent of recurring issues that persisted literally for years in Rails where various combinations of the sass, sass-rails, sprockets, and rails gems would have interactions that frequently meant that updating your Rails version involved hunting down a set of versions for those gems that would work together.

1 Like

I wasnt really aware of these issues with deps, these error are really pain to debug.
In case of Phoenix no one updated those dependecies, they are really old like really really old.

Although it will be fixed soon as José Valim and few other people mentioned that these error will be addressed soon.

I also ran into this issue. It appears this is going to be fixed by PR #4146. If you’re looking for a workaround, take a look at this commit.

1 Like