云功能模拟器:无法部署功能

时间:2017-03-26 12:11:48

标签: google-cloud-functions

我正在尝试在云函数模拟器上部署我的函数,但是我的终端却抛出了这个错误:

$ 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。我做错了吗?

3 个答案:

答案 0 :(得分:1)

有同样的问题。对我来说它没有显示权限日志..问题是权限。尝试使用超级用户的命令。

第1步。 启动gcloud功能

sudo functions start

第2步。 部署导出的helloworld函数。

sudo functions deploy helloworld --trigger-http

答案 1 :(得分:1)

概述

解决此问题的正确方法是将npm全局目录更改为不需要root权限即可安装和运行的目录。

你真的不应该sudonpm 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找出所拥有的内容。

更改npm全局目录

我建议使用https://docs.npmjs.com/getting-started/fixing-npm-permissions

中描述的选项2

从上面的链接复制粘贴解决方案:

  
      
  1. 为全局安装创建目录:

         

    mkdir ~/.npm-global

  2.   
  3. 配置npm以使用新目录路径:

         

    npm config set prefix '~/.npm-global'

  4.   
  5. 打开或创建〜/ .profile文件并添加以下行:

         

    export PATH=~/.npm-global/bin:$PATH

  6.   
  7. 返回命令行,更新系统变量:

         

    source ~/.profile

  8.   

不使用sudo安装全局

既然您的计算机已经被清理并且npm global已经配置到不需要root权限的目录,那么您应该能够在没有sudo的情况下安装和运行。

答案 2 :(得分:0)

original post显然已经很晚了。希望这可以帮助将来有同样错误的其他人。

我遇到了同样的问题,我没有正确安装这些要求。介入此处的任何人都可以查看Error: EACCES: permission denied #195

此错误的主要注意事项install all requirements properly