Jump to content

Node.js

From NixOS Wiki
Revision as of 19:37, 17 July 2018 by imported>Samueldr (Inits page with -g FAQ entry)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
☶︎
This article or section needs to be expanded. Further information may be found in the related discussion page. Please consult the pedia article metapage for guidelines on contributing.

FAQ

Using npm install -g fails

The following errors are to be expected.

npm ERR! Error: EACCES: permission denied, access '/nix/store/00000000000000000000000000000000-nodejs-6.14.3/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { Error: EACCES: permission denied, access '/nix/store/00000000000000000000000000000000-nodejs-6.14.3/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/nix/store/00000000000000000000000000000000-nodejs-6.14.3/lib/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

The store is read-only as it should be. Purity in Nix and NixOS makes it right not to allow installation using -g.

There are a couple solutions, none of them are strictly wrong. You can either configure npm so it installs globally to your home, or avoid using -g entirely. It is also possible, for node versions 8 and greater, to use npx.

Install to your home

This is done through configuring npm and amending your PATH.[1]

 $ npm set prefix ~/.npm-global

Then, amend your PATH so it looks into $HOME/.npm-global.

Avoid using -g

This is a bit harder to implement, but creates a bit more strictness in your environment; it will be impossible accidentally make use of what would have been a globally installed package. The idea is to install it to either a temporary transitory folder or to the project folder, then run the locally installed instance of the package, the binaries are found under node_packages/.bin/.[2]

 $ npm install uglify-es
[ ... ]

 $ ls -l node_modules/.bin/
total 0
lrwxrwxrwx 1 user users 25 Jul 17 15:34 uglifyjs -> ../uglify-es/bin/uglifyjs

 $ node_modules/.bin/uglifyjs --help
  Usage: uglifyjs [options] [files...]

Using npx

 $ nix-shell -p nodejs-8_x

 $ npx create-react-app --help
npx: installed 67 in 1.671s
  Usage: create-react-app <project-directory> [options]
[...]

References