我打开了一个旧的Firebase项目,以将其功能更新为新的v2格式。没什么大不了的。当我这样做时,我清除了所有的节点和npm内容,并用nvm
重新安装了它们,因为Firebase对它们支持的确切节点版本非常挑剔。同样,没什么大不了的。
但是,现在,每当我针对firebase serve --only functions
所提供的云功能执行HTTP请求时,都会收到类似这样的疯狂错误消息(并且请求永不终止):
2018-08-14T03:45:56.195Z - error: SUPERVISOR clientError { Error: Parse Error
at Error (native) bytesParsed: 1, code: 'HPE_INVALID_METHOD' } connecting=false, _hadError=false, bytesRead=147, , fd=14, reading=true, $ref=$, onread=function onread(nread, buffer) {
var handle = this;
var self = handle.owner;
assert(handle === self._handle, 'handle != self._handle');
self._unrefTimer();
debug('onread', nread);
[...]
我从~/.nvm/versions/node/v6.11.5/lib/node_modules/firebase-tools/node_modules/@google-cloud/functions-emulator/logs/cloud-functions-emulator.log
撤消了
屏幕上的错误确实令人迷惑;它无缘无故地转储了整个文件(或者至少是onread
函数):
这使我整夜疯狂,在还原所有更改并返回到昨天的代码后,我仍然收到错误消息。
有人曾见过吗?你知道如何解决吗?
答案 0 :(得分:6)
如果您尝试通过https而不是http访问模拟的云功能,也会出现(非常无用)错误消息。如果您随处都安装了HTTPS之类的浏览器附加组件,则可能会无意间发生这种情况。
答案 1 :(得分:0)
经过一夜安眠并精神焕发,我发现我在curl命令中键入了“ -H”错误,而是键入了“ -X”,并将标头作为HTTP方法发送。
原是:
curl -v -X "Authorization: Bearer $token" http://localhost:5000/...
应该是:
curl -v -H "Authorization: Bearer $token" http://localhost:5000/...
所以error: SUPERVISOR clientError { Error: Parse Error at Error (native) bytesParsed: 1, code: 'HPE_INVALID_METHOD' }
没错,只是超级无益。
有人知道哪个包装来自吗?我将提交一个更好的错误,该错误至少会打印出所收到的方法。昨晚可以节省我几个小时的时间。