我正在尝试在云函数模拟器上部署我的函数,但是我的终端却抛出了这个错误:
$ functions deploy sendNotifications --trigger-http
{错误:EACCES:权限被拒绝,mkdir' / usr / local / lib / node_modules / @ google-cloud / functions-emulator / logs' 在错误(本机) at Object.fs.mkdirSync(fs.js:922:18) at Object.assertLogsPath(/usr/local/lib/node_modules/@google-cloud/functions-emulator/src/emulator/logs.js:31:10) 在新的控制器(/usr/local/lib/node_modules/@google-cloud/functions-emulator/src/cli/controller.js:84:32) at Object.exports.handler(/usr/local/lib/node_modules/@google-cloud/functions-emulator/src/cli/commands/deploy.js:124:22) at Object.self.runCommand(/usr/local/lib/node_modules/@google-cloud/functions-emulator/node_modules/yargs/lib/command.js:231:22) at Object.Yargs.self._parseArgs(/usr/local/lib/node_modules/@google-cloud/functions-emulator/node_modules/yargs/yargs.js:989:30) at Object.Yargs.self.parse(/usr/local/lib/node_modules/@google-cloud/functions-emulator/node_modules/yargs/yargs.js:533:23) at Object.main(/usr/local/lib/node_modules/@google-cloud/functions-emulator/src/cli/main.js:69:6) 在getProjectId.then(/ usr / local / lib / node_modules / @ google-cloud / functions-emulator / bin / functions:100:27) 错误:-13,代码:' EACCES',系统调用:' mkdir',路径: '在/ usr /本地/ LIB / node_modules / @谷歌云/功能仿真器/日志' }
我已经cd-ed到函数目录并检查我是否已登录到firebase并选择了正确的项目ID。我做错了吗?
答案 0 :(得分:1)
有同样的问题。对我来说它没有显示权限日志..问题是权限。尝试使用超级用户的命令。
第1步。 启动gcloud功能
sudo functions start
第2步。 部署导出的helloworld函数。
sudo functions deploy helloworld --trigger-http
答案 1 :(得分:1)
解决此问题的正确方法是将npm全局目录更改为不需要root权限即可安装和运行的目录。
你真的不应该sudo
到npm install -g
。
与functions start
相同。
鉴于您已经安装了函数,大概使用sudo npm install -g @google-cloud/functions-emulator
,您现在需要先使用sudo sudo npm uninstall -g @google-cloud/functions-emulator
平均卸载它。
为什么要卸载它?您当前已将functions
安装到需要写入root权限的目录中。从错误中可以看出,它确实需要写入日志文件的权限。
我建议卸载使用sudo
安装的其他npm软件包,但npm除外。您可以使用sudo npm list -g --depth=0
找出所拥有的内容。
我建议使用https://docs.npmjs.com/getting-started/fixing-npm-permissions
中描述的选项2从上面的链接复制粘贴解决方案:
为全局安装创建目录:
mkdir ~/.npm-global
配置npm以使用新目录路径:
npm config set prefix '~/.npm-global'
打开或创建〜/ .profile文件并添加以下行:
export PATH=~/.npm-global/bin:$PATH
- 醇>
返回命令行,更新系统变量:
source ~/.profile
既然您的计算机已经被清理并且npm global已经配置到不需要root权限的目录,那么您应该能够在没有sudo的情况下安装和运行。
答案 2 :(得分:0)
original post
显然已经很晚了。希望这可以帮助将来有同样错误的其他人。
我遇到了同样的问题,我没有正确安装这些要求。介入此处的任何人都可以查看Error: EACCES: permission denied #195。
此错误的主要注意事项install all requirements properly
。