如果我在节点中执行此操作:
console.log('1');
console.log('2');
输出:
1
2
过程结束。
如果我将其更改为:
console.log('1');
var Firebase = require('firebase');
var ref = new Firebase('https://<some-base>.firebaseio.com/');
console.log('2');
输出:
1
2
并继续这个过程。
我认为这是因为ref
使这个过程保持活力。我知道我可以使用process.exit
,但我宁愿不这样做。我实际上不希望进程退出,我只是想确保我没有内存泄漏问题,我的firebase ref永远存在。一旦我完成它,有没有办法销毁firebase引用?
答案 0 :(得分:7)
[Firebase工程师]目前,使用new Firebase(...)
实例化Firebase客户端将创建一个长期持久连接,使Node.js进程保持活动状态。
对于大量用例而言,这无疑是不理想的,我们还有一些工作要做,以确保在没有未完成的Firebase侦听器或待处理的服务器写入时,该进程可以干净地自动退出,但它是&#39 ;中等/低优先级。我期待一个&#34;修复&#34;将在Q2&#39; 15发布,希望是Q1。
答案 1 :(得分:0)
我在使用tape时找到的一个解决方法是在结束时调用test.onFinish(() => process.exit());
。它并不理想,但它似乎完成了直接和测试运行的运行。
示例:
const test = require('tape');
test('Some test', (t) => {
// test code
});
test('Another test', (t) => {
// test code
});
test.onFinish(() => process.exit());