首页 > 解决方案 > 尝试为条带安装 netlify-lambda 时,npm 写入访问被拒绝

问题描述

当我尝试在 gatsby 应用程序中安装 netlify-lambda 时会发生这种情况

npm install -g netlify-lambda
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/netlify-lambda/node_modules/@babel/plugin-proposal-object-rest-spread
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/netlify-lambda/node_modules/@babel/parser
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/netlify-lambda/node_modules/@babel/helper-create-class-features-plugin
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/netlify-lambda/node_modules/@babel/types
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/netlify-lambda/node_modules/@babel/generator
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/netlify-lambda/node_modules/caniuse-lite
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/netlify-lambda/node_modules/duplexify/node_modules/readable-stream
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/netlify-lambda/node_modules/duplexify
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/netlify-lambda/node_modules/webpack
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/netlify-lambda/node_modules/@babel
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/netlify-lambda/node_modules
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/netlify-lambda/node_modules/duplexify/node_modules
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
npm ERR! path /usr/local/lib/node_modules/netlify-lambda/node_modules/@babel/plugin-proposal-object-rest-spread
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules/netlify-lambda/node_modules/@babel/plugin-proposal-object-rest-spread'
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules/netlify-lambda/node_modules/@babel/plugin-proposal-object-rest-spread']
npm ERR!   stack:
npm ERR!    'Error: EACCES: permission denied, access \'/usr/local/lib/node_modules/netlify-lambda/node_modules/@babel/plugin-proposal-object-rest-spread\'',
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path:
npm ERR!    '/usr/local/lib/node_modules/netlify-lambda/node_modules/@babel/plugin-proposal-object-rest-spread' }
npm ERR!

试过但不起作用:

sudo chown -R $USER:$GROUP ~/.npm sudo chown -R $USER:$GROUP ~/.config

sudo npm install -g netlify-lambda

重新安装 npm

标签: npm

解决方案


您在 Netlify 构建容器中没有 root 访问权限,因此 sudo 对您没有任何好处。

您也不需要npm install像这样手动进行任何操作 - 您应该将您的 package.json 发送到您的 repo 的根目录中,并且它应该具有您的包集的规范。Netlify 然后会自动运行npm install (有关详细信息,请参阅本文),安装您需要的内容,并将其放在您的 $PATH 上,这样您就可以运行作为安装一部分生成的任何二进制文件。

本文介绍了我们持续部署环境的流程: https ://www.netlify.com/blog/2016/10/18/how-our-build-bots-build-sites/

TL;DR 您应该能够有效地将netlify-lambdapackage.json 作为依赖项放入,然后在构建期间运行它,而无需进一步安装。


推荐阅读