在我的 Ionic 3 项目中执行命令firebase deploy --only function
时收到以下错误。此解决方案对我不起作用。
Running command: npm --prefix "$RESOURCE_DIR" run build
> functions@ build /Users/myuser/Project/functions
> tsc
node_modules/firebase-functions/lib/function-configuration.d.ts:4:64 - error TS1005: ']' expected.
4 export declare const SUPPORTED_REGIONS: readonly ["us-central1", "us-east1", "us-east4", "europe-west1", "europe-west2", "asia-east2", "asia-northeast1"];
~
node_modules/firebase-functions/lib/function-configuration.d.ts:4:66 - error TS1134: Variable declaration expected.
4 export declare const SUPPORTED_REGIONS: readonly ["us-central1", "us-east1", "us-east4", "europe-west1", "europe-west2", "asia-east2", "asia-northeast1"];
~~~~~~~~~~
node_modules/firebase-functions/lib/function-configuration.d.ts:4:153 - error TS1005: ';' expected.
4 export declare const SUPPORTED_REGIONS: readonly ["us-central1", "us-east1", "us-east4", "europe-west1", "europe-west2", "asia-east2", "asia-northeast1"];
~
node_modules/firebase-functions/lib/function-configuration.d.ts:16:61 - error TS1005: ']' expected.
16 export declare const VALID_MEMORY_OPTIONS: readonly ["128MB", "256MB", "512MB", "1GB", "2GB"];
~
node_modules/firebase-functions/lib/function-configuration.d.ts:16:63 - error TS1134: Variable declaration expected.
16 export declare const VALID_MEMORY_OPTIONS: readonly ["128MB", "256MB", "512MB", "1GB", "2GB"];
~~~~~~~
node_modules/firebase-functions/lib/function-configuration.d.ts:16:93 - error TS1005: ';' expected.
16 export declare const VALID_MEMORY_OPTIONS: readonly ["128MB", "256MB", "512MB", "1GB", "2GB"];
~
当我查看文件node_modules/firebase-functions/lib/function-configuration.d.ts时,它显示了语法错误。
版本详情:
"angularfire2": "^5.2.1",
"firebase": "^6.3.1",
"firebase-admin": "^8.2.0",
"firebase-functions": "3.2.0",
"typescript": "^3.5.3"
npm install -g typescript@3.5.3 对我有用。我认为更高的版本也可以工作。更新全局打字稿版本很重要,因为我的本地打字稿版本更新不起作用
从您链接的 github 问题和错误消息本身来看,该错误似乎是由于新的只读元组功能造成的。它是在typescript@3.4.0
年引入的,因此,从理论上讲,任何高于此值的打字稿版本都应该有效。
事实上,firebase-functions@3.2.0
使用typescript@3.5.2
所以我建议你使用相同或更高的。
话虽如此,我看到您已经使用了typescript@3.5.3
但仍然弹出错误。
版本详情:
"angularfire2": "^5.2.1", "firebase": "^6.3.1", "firebase-admin": "^8.2.0", "firebase-functions": "3.2.0", "typescript": "^3.5.3"
这可能是因为内部其他软件包使用了不同的(较旧的(打字稿版本。请检查您的 package-lock.json(或 yarn.lock(进行确认。
如果不是这种情况,那么我的下一个最佳猜测是ionic-app-scripts
内部使用较旧的打字稿。
检查此文件的开头是否添加了任何空格。我遇到了同样的问题,删除文件顶部的空间后,它就可以工作了。
就我而言,我刚刚从packege.json中删除了存根类型,它开始为我工作更新所有内容都不起作用,因为这个旧狗屎与新版本的Firebase不兼容好吧,您在问题中没有提到您的依赖项中确实有这个,但我 100% 确定问题来自这里,因为我只是因为这个花了一整晚:
"dependencies": {
"@types/firebase": "^3.2.1", <<====== this is shit man
"@types/fs-extra": "^8.0.1",
"@types/mongoose": "^5.5.43",
"@types/request": "^2.48.4",
"actions-on-google": "^2.12.0",
"bcrypt-inzi": "^1.0.7",
"body-parser": "^1.18.3",
"dialogflow-fulfillment": "^0.6.1",
"express": "^4.17.1",
"firebase-admin": "^8.6.0",
"firebase-functions": "^3.3.0",
"fs-extra": "^8.1.0",
"mongoose": "^5.8.9",
"request": "^2.88.0"
},
运行 npm i 时您是否注意到此警告
npm WARN deprecated @types/firebase@3.2.1: This is a stub types definition for Firebase API (https://www.firebase.com/docs/javascript/firebase). Firebase API provides its own type definitions, so you don't need @types/firebase installed!
由于Firebase函数有自己的输入文件,因此现在根本不需要