1

我正在尝试通过 npm ( npm install -g serverless) 安装无服务器,但出现以下错误:

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.

有谁知道如何做到这一点而不必切换您正在使用的节点版本?

编辑:当我用 sudo 运行它时,我得到以下输出:

npm WARN deprecated request-promise-native@1.0.9: 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 har-validator@5.1.5: this library is no longer supported
npm WARN deprecated uuid@3.4.0: 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 uuid@3.4.0: 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 uuid@3.4.0: 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 uuid@3.3.2: 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 request@2.88.2: 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

但是,当我尝试运行时,serverless invoke local --function f1我得到zsh: command not found: serverless- 使用 sudo 安装后,我需要做什么才能识别该命令?

4

1 回答 1

3

你的权限是错误的。一般来说,您不想使用 sudo 从 npm 安装任何东西。

你可以sudo chown yourUser:yourGroup -R /usr/local/lib/node_modules。(如果您在 macOS 上,您的组可能是staff。您可以通过ls -l在主目录中运行并查看与您的用户名相邻的标签来找到您的组)

无论如何,一个简单的替代方案是最佳实践 - 将无服务器框架安装为项目的开发依赖项:

npm i -D serverless

serverless deploy然后你可以运行而不是运行npx serverless deploy

然后,当您将package.json文件签入版本控制时,其他协作者将使用相同版本的无服务器框架。

于 2021-06-21T14:31:39.603 回答