我刚刚安装了firebase-tools和通常的npm软件包安装过程:
npm install -g firebase-tools
Run Code Online (Sandbox Code Playgroud)
我已经创建了一个与Google帐户连接的Firebase帐户,但问题是我可以使用命令行工具进行的唯一程序是:
firebase login // with success
firebase prefs:token // return me the auth token
Run Code Online (Sandbox Code Playgroud)
但每次我尝试其他命令我都会收到错误:
Error: Authentication required.
Run Code Online (Sandbox Code Playgroud)
例如,对于命令init,list等:
firebase init // error
firebase list // error
Run Code Online (Sandbox Code Playgroud)
等等...为什么?
npm,node和firebase-tools的版本:
node : v4.2.2
npm : 3.3.12
firebase : 2.2.0
Run Code Online (Sandbox Code Playgroud) 我正在本地firebase服务器上运行一个webapp (以"firebase serve"开头).
我想要的是找到一种方法告诉我的客户端(浏览器脚本)我的项目文件已经改变,以启动浏览器刷新.
在以前的项目(运行nodejs服务器)中,我的解决方案是在后端和前端之间建立websocket连接.所以每次服务器重新启动时(...由于文件更改,我正在观察使用像nodemon这样的观察者...),我的服务器端代码建立了一个新的连接到客户端,该客户端听取了该事件并刷新了浏览器就可以了.
我的firebase服务器的问题是,我没有运行自己的后端代码,而且我没有找到有关如何告诉我的客户端的任何信息,我的项目文件已经更改.事实上,我的firebase服务器根本没有重启,因为在这个没有后端的环境中还没有必要.但我想至少可以通过nodemon或其他东西运行我的firebase服务器来完成.
附加信息:我试图找到一种方法,使用webpack-dev-server,它集成了自动刷新功能,但无法在两台服务器之间找到链接,也无法在不同端口上集成它们并解决不同的任务.
我的问题可能是:firebase服务器中是否有任何解决方案?有没有办法在文件发生变化时触发客户端事件?或者最终运行我自己的firebase后端中间件来创建与客户端的websocket连接?
欢迎任何建议.
编辑:
我找到了一种使用browsersync的方法.由于browsersync可以充当其他服务器的代理(在我的例子中:firebase服务器),因此设置非常简单.
安装完成后,只需转到项目目录并输入例如:
browser-sync start --proxy"localhost:5000"--files"dist/*"
其中"localhost:5000"是当前服务器所处理的主机和端口,"dist"是应该监视更改的目录.
默认情况下,browsersync将在"localhost:3000"为您的应用提供服务.
有关browsersync主页的更多信息
我已经创建了一个测试项目,并根据文档进行了所有配置,但是当我运行该项目时,它没有按预期运行,在编写此问题之前,我用过google并发现了一些重复的问题,但是每种情况的情况都不同因此,我假设这不是一个重复的问题。
这是我的终端命令和输出:
functions ? npm run serve
> functions@ serve /Users/codecrash/Developments/crm-firestore/functions
> firebase serve --only functions
? functions: Using node@8 from host.
? functions: Emulator started at http://localhost:5000
i functions: Watching "/Users/codecrash/Developments/crm-firestore/functions" for Cloud Functions...
i Your code has been provided a "firebase-admin" instance.
i functions: HTTP trigger initialized at http://localhost:5000/demo-crm/us-central1/helloWorld
Ignoring trigger "onWrite" because the Cloud Firestore emulator is not running.
Ignoring trigger "onUpdate" because the Cloud Firestore emulator is not running.
i functions: Beginning execution of …Run Code Online (Sandbox Code Playgroud) javascript firebase firebase-tools google-cloud-functions google-cloud-firestore
我在错误的目录中运行firebase init,它连接到我的项目.要撤消该操作,我可以从终端删除./firebase.json和my_newly_created_folder_name /吗?谢谢
我遵循此处列出的示例,除非由于新API的修改firebase-tools.
exports.clearMessages = functions.runWith({ timeoutSeconds: 540, memory: '2GB' }).https.onCall(messagesController.clearMessages)
export const clearMessages = async (data, context) => {
const uid = context.auth.uid
const path = `users/${uid}/messages`
return firebase_tools.firestore.delete('flightApp3', path, {
recursive: true,
shallow: true,
allCollections: true
}).then(result => {
console.log('delete result', result)
return result
})
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,我看到云功能日志中显示以下内容:
Unhandled error { Error
at Error.FirebaseError (/user_code/node_modules/firebase-tools/lib/error.js:9:18)
at module.exports (/user_code/node_modules/firebase-tools/lib/getProjectId.js:10:19)
at Command.module.exports (/user_code/node_modules/firebase-tools/lib/requirePermissions.js:11:21)
at /user_code/node_modules/firebase-tools/lib/command.js:154:38
at process._tickDomainCallback (internal/process/next_tick.js:135:7)
name: 'FirebaseError',
message: 'No project active. Run with \u001b[1m--project …Run Code Online (Sandbox Code Playgroud) 因此,当我突然遇到以下错误时,我正在考虑自己的公司尝试在Angular应用中初始化Firebase项目:
Error: Failed to list Firebase projects. See firebase-debug.log for more info.
为了达到这一点,我按照此处的文档中的说明执行了这些说明:
$ npm install -g firebase-tools
$ firebase login //原来我已经登录。
$ firebase list //确保您可以访问您的帐户。
无论如何,回到错误。“好吧,”我想。“我只会查看指向我的日志。” 我打开日志,然后看到:
HTTP Error: 401, Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
FirebaseError: HTTP Error: 401, Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
关于“无效的身份验证凭据”的部分使我认为这与我未登录Firebase有关,但firebase login显示我已登录。
日志中的URL仅将我带到使用我的应用程序中使用firebase …
我有一个用 vue 和 firebase/firestore 构建的应用程序。我使用 firebase 模拟器进行本地开发,并尝试将我的开发工作流程与 cypress 集成。但是,如果我从浏览器访问该应用程序,我会在 cypress 中收到错误消息。
Firebase CLI 版本为 7.9.0,Cypress 版本为“^3.8.0”
我用于加载所有内容的 npm 脚本如下:
"start": "firebase emulators:exec --only firestore \"npm run dev:appandtest\"",
"dev:appandtest": "concurrently -n \"app,test\" -c \"bgYellow.black,bgWhite.black\" \"npm:dev:app\" \"npm:dev:test\"",
"dev:app": "webpack-dev-server --config build/webpack.dev.js",
"dev:test": "npx cypress open",
Run Code Online (Sandbox Code Playgroud)
本地服务器在端口 9000 上运行,而 firebase 模拟器在端口 8080 上运行。
事情运行后,如果我从普通浏览器访问应用程序,一切都很好,如此屏幕所示。
普通的
然后我尝试使用此代码运行基本的柏树测试
describe('The Home Page', function () {
it('successfully loads', function () {
cy.visit('/');
});
});
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
[2019-12-14T15:29:24.725Z] @firebase/firestore: Firestore (6.6.2): Could not reach Cloud Firestore backend. Backend didn't …Run Code Online (Sandbox Code Playgroud) webapp2 firebase firebase-tools cypress google-cloud-firestore
我正在尝试在 Github Actinos 上运行测试,但经过多次尝试后我无法做到这一点。
\n\n接收
\n\n\n\n\n错误:firestore:Firestore 模拟器已退出,因为未安装 java,您可以从https://openjdk.java.net/install/安装它
\n
- name: Test\n uses: w9jds/firebase-action@v1.3.1\n env:\n JAVA_HOME: ${{ env.JAVA_HOME }}\n FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}\n GCLOUD_PROJECT: ${{ secrets.nextGCLOUD_PROJECT }}\n PROJECT_ID: ${{ secrets.nextFIREBASE_PROJECTID }}\n with:\n args: |\n setup:emulators:firestore --debug\n firebase emulators:exec --debug --only functions,firestore \\"npm run test --exit -- --forceExit --detectOpenHandles\\"\n\n - name: Print debug logs\n if: failure()\n run: |\n java --version\n ls -la\n find . -type f -name "fire*-debug.log" | xargs cat\nRun Code Online (Sandbox Code Playgroud)\n\n这就是操作的输出name: Test …
continuous-integration unit-testing firebase firebase-tools github-actions
我对安全规则进行了一些测试,并将数据集启动到本地 Firestore 模拟器(使用该库@firebase/testing,几乎如此处所述)。测试大部分都有效,所以我认为数据确实到达了 Firestore。
但我在模拟器 UI 中看不到它。
\nhttp://localhost:4000/ > Firestore 模拟器 > 转到模拟器显示空数据
\n相关,我想知道\xe2\x80\x9dproject ID\xe2\x80\x9d参数在仿真中的作用是什么?设置 Firebase 应用对象时需要它,但它在哪里使用呢?模拟器没有提供可供选择的模拟项目列表。
\n使困惑。
\n复制方法(根据要求):
\n$ git clone git@github.com:akauppi/GroundLevel-es6-firebase-web.git\n$ cd GroundLevel-es6-firebase-web/rules-test\n\n# You only need to work in the rules-test subproject\n\n$ npm install\n...\nRun Code Online (Sandbox Code Playgroud)\n在另一个终端(同一文件夹)中:
\n$ npm run start # leave running...\nRun Code Online (Sandbox Code Playgroud)\n$ npm run test:symbols\nRun Code Online (Sandbox Code Playgroud)\n测试应该通过(跳过其中一项)。
\n测试的运行已将数据准备到模拟器中,并且它应该仍然存在。项目 ID abc(请参阅输出中的“使用会话:abc”)。
http://localhost:4000/> 进入模拟器
\n预期的:
\nabcdata.js …我只是将我的依赖更新为"@firebase/rules-unit-testing": "^2.0.0"
它破坏了我的代码。我的代码是
import * as firebase from "@firebase/rules-unit-testing";
function getAdminFirestore() {
return firebase.initializeAdminApp({ projectId: projectID }).firestore();
}
function getFirestore(auth?: TokenOptions) {
return firebase.initializeTestApp({ projectId: projectID, auth: auth }).firestore();
}
beforeEach(async () => {
await firebase.clearFirestoreData({ projectId: projectID });
});
after(async () => {
await firebase.clearFirestoreData({ projectId: projectID });
});
Run Code Online (Sandbox Code Playgroud)
但我有很多错误,因为有些方法不再像这样可用
那么 firebase/rules-unit-testing 2.0.0 中的等效方法是什么?
firebase ×10
firebase-tools ×10
node.js ×2
browser ×1
cypress ×1
javascript ×1
refresh ×1
unit-testing ×1
watch ×1
webapp2 ×1