Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NPM Error : Error: EROFS: read-only file system, mkdir '/npm'

I created an index.js, index.html and package.json file and I wanted to add express. When I write 'npm install express' in the terminal, I'm getting the error below. So far, I tried 'sudo npm install -g express', deleting node and npm completely and re-install. I also went through other questions over here but none of them worked out for me. Whatever I write with npm I get the same error. (I'm using macOS)

Do you have any suggestions?

This is the error I am getting:

Error: EROFS: read-only file system, mkdir '/npm'

TypeError: Cannot read property 'loaded' of undefined

    at exit (/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:97:27)

    at errorHandler (/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:216:3)

    at /usr/local/lib/node_modules/npm/bin/npm-cli.js:78:20

    at cb (/usr/local/lib/node_modules/npm/lib/npm.js:225:22)

    at /usr/local/lib/node_modules/npm/lib/npm.js:263:24

    at /usr/local/lib/node_modules/npm/lib/config/core.js:81:7

    at Array.forEach (<anonymous>)

    at /usr/local/lib/node_modules/npm/lib/config/core.js:80:13

    at f (/usr/local/lib/node_modules/npm/node_modules/once/once.js:25:25)

    at afterExtras (/usr/local/lib/node_modules/npm/lib/config/core.js:171:20)

/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:97

  var doExit = npm.config.loaded ? npm.config.get('_exit') : true

                          ^

TypeError: Cannot read property 'loaded' of undefined

    at exit (/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:97:27)

    at process.errorHandler (/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:216:3)

    at process.emit (events.js:223:5)

    at process._fatalException (internal/process/execution.js:150:25)
like image 603
Eliftch Avatar asked Feb 01 '20 19:02

Eliftch


2 Answers

The error means that you have no permission to install anything with npm at the path /npm.
To verify this run npm root -g. This should return /npm.

Note that /npm ist not the default installation path on MacOS (see https://stackoverflow.com/a/35638528/1754076).

Checkout your npm configuration file and change the default installation path to something where you do have write access. You can also use npm itself to change the default installation path.

like image 67
alexloehr Avatar answered Nov 06 '22 12:11

alexloehr


mv ~/.npmrc ~/.npmrc.old

npm prefix -g

this might work

like image 1
akshay shetty Avatar answered Nov 06 '22 13:11

akshay shetty