gpt4 book ai didi

node.js - 请求外部网络资源! - 来自 firebase 模拟器的日志错误

转载 作者:行者123 更新时间:2023-12-03 12:17:26 25 4
gpt4 key购买 nike

我尝试注册并登录 firebase 。我用 Firebase(火店),
postman , express (REST API)
.

我的代码(index.js)

const functions = require("firebase-functions");
const admin = require("firebase-admin");

admin.initializeApp(config);
// i'm not provide the config data here, but initialized in my actual code.

const express = require("express");
const app = express();

let db = admin.firestore();

// Signup route
app.post('/signup', (req,res) => {
const newUser = {
email: req.body.email,
password: req.body.password,
confirmPassward: req.body.confirmPassword,
handle: req.body.handle
};

let token, userId;
db.doc(`/users/${newUser.handle}`)
.get()
.then(doc => {
if(doc.exists) {
return res.status(400).json({ hanldle: 'this hanlde is already taken'});
}else {
return firebase()
.auth()
.createUserWithEmailAndPassword(newUser.email, newUser.password);
}
})

.then((data) => {
userId = data.user.uid;
return data.usergetIdToken()
})
.then( ( idToken ) => {
token = idToken ;
const userCredentials = {
handle: newUser.handle,
email: newUser.email,
createdAt: new Date().toISOString(),
userId
};
return db.doc(`/users/${newUser.handle}`).set(userCredentials);
})
.then(() => {
return res.status(201).json({ token });
})
.catch(err => {
if(err.code === 'auth/email=already-in-use') {
return res.status(400).json({ email: 'email is alread is used '})
} else {
return res.status(500).json({ err : err.code });
}
});
});

exports.api = functions.https.onRequest(app);

firebase.json 文件
{
"emulators": {
"functions": {
"port": 5001
},
"ui": {
"enabled": true
},
"hosting": {
"port": 5000
}
},
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}


我正在使用 启动 firebase 模拟器firebase 模拟器:开始
我在启动 firebase 模拟器时没有收到任何错误并且它可以正常工作虽然,有一个警告,比如
!  functions: The Cloud Firestore emulator is not running, so calls to Firestore will affect production.

如果我使用 post 发送任何 get 或 post 请求,我会从模拟器中获取错误日志
!  External network resource requested!
- URL: "http://169.254.169.254/computeMetadata/v1/instance"
- Be careful, this may be a production service.
! External network resource requested!
- URL: "http://metadata.google.internal./computeMetadata/v1/instance"
- Be careful, this may be a production service.
> Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.

我不知道如何摆脱它。您在这件事上能给我的任何帮助将不胜感激。

最佳答案

我刚刚遇到了同样的问题,似乎归结为 admin.initializeApp();需要与您可能提供的信息不同的信息。
我找到了 this answer这里有帮助。
我猜你是从控制台 > 项目设置 > 常规 > 你的应用程序 > Firebase SDK 片段中得到的配置 JSON。这就是我正在使用的并且也不断收到此错误。
然后我按照那个答案的建议做了。转到控制台 > 项目设置 > 服务帐号 .在那里你会发现一个蓝色按钮,上面写着“生成新的私钥”。下载该 key ,将其保存到您的项目中(并根据需要重命名)。然后按照该页面的建议,使用以下代码进行初始化。

var admin = require("firebase-admin");

var serviceAccount = require("path/to/serviceAccountKey.json");

admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://projectname.firebaseio.com"
});
可能值得注意的是 databaseURL可以在您目前拥有的 config 中找到位.

关于node.js - 请求外部网络资源! - 来自 firebase 模拟器的日志错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62209760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com