我整天都在成功地使用Firebase部署功能,学习如何使用它。我试图查看是否初始化了另一个部署到相同项目的目录,并且在更新npm版本之前没有问题,直到我尝试部署时都出现了“意外错误”,这是怎么回事
我试图通过使我自己的用户成为node_modules,bin和share目录的所有者来更新npm权限。我尝试卸载并重新安装firebase-tools。我还尝试删除所有当前函数目录,并初始化一个新目录,然后在其中重新安装我的依赖项。
这是调试日志
Dylans-MacBook-Pro-3:functions dsenderling$ firebase deploy --debug
[2019-07-03T18:04:35.526Z] ----------------------------------------------------------------------
[2019-07-03T18:04:35.528Z] Command: /usr/local/bin/node /usr/local/bin/firebase deploy --debug
[2019-07-03T18:04:35.529Z] CLI Version: 7.0.2
[2019-07-03T18:04:35.529Z] Platform: darwin
[2019-07-03T18:04:35.529Z] Node Version: v10.16.0
[2019-07-03T18:04:35.529Z] Time: Wed Jul 03 2019 13:04:35 GMT-0500 (Central Daylight Time)
[2019-07-03T18:04:35.529Z] ----------------------------------------------------------------------
[2019-07-03T18:04:35.537Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2019-07-03T18:04:35.537Z] > authorizing via signed-in user
[2019-07-03T18:04:35.537Z] [iam] checking project my-awesome-project-5a4e9 for permissions ["cloudfunctions.functions.create","cloudfunctions.functions.delete","cloudfunctions.functions.get","cloudfunctions.functions.list","cloudfunctions.functions.update","cloudfunctions.operations.get","firebase.projects.get"]
[2019-07-03T18:04:35.539Z] >>> HTTP REQUEST POST https://cloudresourcemanager.googleapis.com/v1/projects/my-awesome-project-5a4e9:testIamPermissions
permissions=[cloudfunctions.functions.create, cloudfunctions.functions.delete, cloudfunctions.functions.get, cloudfunctions.functions.list, cloudfunctions.functions.update, cloudfunctions.operations.get, firebase.projects.get]
[2019-07-03T18:04:35.769Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Wed, 03 Jul 2019 18:04:35 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, server-timing=gfet4t7; dur=83, alt-svc=quic=":443"; ma=2592000; v="46,43,39", accept-ranges=none, transfer-encoding=chunked
[2019-07-03T18:04:37.033Z] TypeError: Cannot read property 'wanted' of undefined
at /usr/local/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js:37:51
at process._tickCallback (internal/process/next_tick.js:68:7)
Error: An unexpected error has occurred.
我的直觉告诉我firebase-tools或firebase sdk出了点问题,但我不知道是什么原因。预先感谢
答案 0 :(得分:31)
出现了完全相同的问题,它是在将npm从6.9.2更新到6.10.0之后立即开始的。
最终降级到6.9.2(npm install -g npm@6.9.2),我的Firebase部署立即又开始工作。
编辑:firebase部署正在使用npm 6.10.1,现在可以安全更新!
答案 1 :(得分:5)
我认为此问题是由npm 6.10.0中的修复引起的,请参见https://github.com/npm/cli/pull/176。
一种解决方法是修改/usr/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js
(Linux)。
对于macOS和nvm,请参阅下面的注释。
来自:
if (!output) {
return;
}
收件人:
if (!output || !output["firebase-functions"]) {
return;
}
答案 2 :(得分:1)
这也刚开始发生在我身上...
好像npm
正在为此命令输出不同的结果
npm outdated firebase-functions --json=true
// for me outputs {}\n
脚本checkFirebaseSDKVersion.js
期望这样的事情(如果您的firebase函数实际上已经过时,它将得到此结果)
{
"current": "2.5.0",
"wanted": "2.5.0",
"latest": "3.0.2",
"location": "node_modules/some path /firebase-functions"
}
或输出空白...在您的情况下更有可能
“修复”它的操作
随着它开始影响更多的人,这可能很快就会得到解决。
目前
修改
/usr/local/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js
将其添加到第24行附近的{}\n
的空白输出更新中
if (data && data.toString() !== "{}\n") {
output = JSON.parse(data.toString("utf8")); // existing Code!
}
不确定npm的更新过程如何工作,因此您可能必须还原此内容才能在修复后对其进行更新,但是我认为不是。
希望有帮助!
答案 3 :(得分:0)
npm@6.12.0和firebase-functions@3.3.0遇到相同的问题。
TypeError: Cannot read property 'wanted' of undefined
at /usr/local/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js:37:51
at process._tickCallback (internal/process/next_tick.js:68:7)
通过在/usr/local/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js
第37行中进行更改来解决。
var wanted = (output["firebase-functions"] || {}).wanted;
var latest = (output["firebase-functions"] || {}).latest;
答案 4 :(得分:0)
尝试:
npm i -g firebase-tools@latest
答案 5 :(得分:0)
由于 mac 上旧版本的 Firebase CLI,我遇到了同样的问题,尝试使用标准命令 npm command ==> $phar->buildFromIterator(
new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/path/to/project', FilesystemIterator::SKIP_DOTS)
),
'/path/to/project'
);
进行更新没有帮助,因为它表明我的 CLI 已更新但正在部署功能命令正在选择一个旧的缓存版本,所以对我有用的是使用自动安装脚本升级到最新版本:-
npm install -g firebase-tools
可以在官方文档 here
上找到更多详细信息