10

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)
Reza Ghorbani
  • 2,396
  • 2
  • 28
  • 33
Eliftch
  • 218
  • 1
  • 4
  • 13

5 Answers5

10

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.

alexloehr
  • 1,773
  • 1
  • 20
  • 18
1

mv ~/.npmrc ~/.npmrc.old

npm prefix -g

this might work

akshay shetty
  • 194
  • 3
  • 10
1

In my case it turned out to be a problem with the cache entry in the ~/.npmrc file. Apparently one of the sub-projects I have worked on required the line:

cache=/build/package_cache/npm

But when run in another sub-project it seems to have caused npm to not be able to create the /build directory.

Commenting out that line worked around the problem.

TheChrisPratt
  • 457
  • 3
  • 13
0

I had error EROFS: read-only file system, mkdir '/.npm' while I was trying to install packages.

Then I used npm config list --json and found only thing used this path is "cache": "/.npm".

So I changed cache by npm config set cache '/tmp', then installation worked.

ddreset
  • 21
  • 4
-1

In my case, I deleted ~/.local/lib, then re-ran the npm install -g command. No more error.

Dan Dascalescu
  • 143,271
  • 52
  • 317
  • 404