firebase-tools:无法使用GOOGLE_APPLICATION_CREDENTIALS或FIREBASE_TOKEN env vars登录

问题描述

我目前正在使用firebase-tools来通过Ubuntu OS进行部署。基于刷新令牌的使用,使用以下命令完成登录过程后,我已经能够成功完成此操作:

public Student(String name,String surname,Integer age) {

    validateInput(name,surname,age);

    this.name = name;
    this.surname = surname;
    this.age = age;
}

private void validateInput(String name,Integer age) {

    if (name == null || name.isBlank()) throw new InvalidNewStudentNameException(HttpStatus.UNPROCESSABLE_ENTITY,name);

    if (surname == null || surname.isBlank()) throw new InvalidNewStudentSurnameException(HttpStatus.UNPROCESSABLE_ENTITY,surname);

    if (age == null || age < 16) throw new InvalidNewStudentAgeException(HttpStatus.UNPROCESSABLE_ENTITY,age);
}

但是我想使用github project中记录的环境变量,而不直接传递令牌(--token = $ FIREBASE_TOKEN):

GOOGLE_APPLICATION_CREDENTIALS-如果此环境变量指向服务帐户密钥文件,则Firebase CLI将作为服务帐户进行身份验证。 FIREBASE_TOKEN-您可以显式使用此环境变量从Firebase登录名ci中传递长期存在的用户令牌。

当我执行以下命令时, firebase-tools无法部署,因为登录过程从未执行过。看起来无法识别环境变量:

a)使用FIREBASE_TOKEN环境var

sudo firebase logout
sudo firebase login:ci //generated token
export FIREBASE_TOKEN='{generatedToken}'
sudo firebase deploy --token=$FIREBASE_TOKEN

b)使用GOOGLE_APPLICATION_CREDENTIALS环境var

sudo firebase logout
export FIREBASE_TOKEN='a new generated token'
sudo firebase deploy

我的凭据JSON文件如下所示:

sudo firebase logout
export GOOGLE_APPLICATION_CREDENTIALS='/path/service_account.json'
sudo firebase deploy

我在做什么错了?

非常感谢您!

解决方法

pakage.json 上,您需要在 serve 上添加它:

export GOOGLE_APPLICATION_CREDENTIALS=key.json &&

在开始时就写出来。

我上传了一个例子。

enter image description here

希望对您有用;)

,

最后,真正的错误是使用 sudo 命令。 环境变量从未对root用户可用。 我已经修复了firebase-tools的安装,可以避免使用root权限,现在它可以正常运行。

还是非常感谢!