Reputation: 2575
I am trying to install serverless via npm (npm install -g serverless
) but get the following error:
npm ERR! code EACCES
npm ERR! syscall rename
npm ERR! path /usr/local/lib/node_modules/serverless
npm ERR! dest /usr/local/lib/node_modules/.serverless-Ls3sFIzE
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, rename '/usr/local/lib/node_modules/serverless' -> '/usr/local/lib/node_modules/.serverless-Ls3sFIzE'
npm ERR! [Error: EACCES: permission denied, rename '/usr/local/lib/node_modules/serverless' -> '/usr/local/lib/node_modules/.serverless-Ls3sFIzE'] {
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'rename',
npm ERR! path: '/usr/local/lib/node_modules/serverless',
npm ERR! dest: '/usr/local/lib/node_modules/.serverless-Ls3sFIzE'
npm ERR! }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.
Does anyone know how to do this without having to switch the node versions you're using?
EDIT: When I run this with sudo I get the following output:
npm WARN deprecated [email protected]: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated [email protected]: this library is no longer supported
npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
changed 672 packages, and audited 673 packages in 25s
50 packages are looking for funding
run npm fund for details
found 0 vulnerabilities
However, when I try to run serverless invoke local --function f1
I get zsh: command not found: serverless
- after I install with sudo what do I need to do so that the command is recognised?
Upvotes: 3
Views: 4366
Reputation: 3787
Your permissions are goofed. Speaking generally, you don't want to install anything from npm with sudo.
You can sudo chown yourUser:yourGroup -R /usr/local/lib/node_modules
.
(If you're on macOS, your group is probably staff
. You can find your group by running ls -l
in your home directory and looking at the label adjacent to your username)
A simple alternative is a best practice anyway - install the serverless framework as a development dependency of your project:
npm i -D serverless
And then instead of running serverless deploy
you can run npx serverless deploy
.
Then as you check in the package.json
file to version control, other collaborators will use the same version of the serverless framework.
Upvotes: 5