Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 无法将函数部署到Firebase_Typescript_Firebase_Google Cloud Functions_Firebase Admin - Fatal编程技术网

Typescript 无法将函数部署到Firebase

Typescript 无法将函数部署到Firebase,typescript,firebase,google-cloud-functions,firebase-admin,Typescript,Firebase,Google Cloud Functions,Firebase Admin,当我试图对用户设置自定义声明时,我无法部署云功能。这就是函数 exports.verifyPhone = functions.https.onRequest(async (request, response) => { const db = admin.firestore(); const userId = request.body['userId']; const firebaseId = request.body['firebaseId']; cons

当我试图对用户设置自定义声明时,我无法部署云功能。这就是函数

exports.verifyPhone = functions.https.onRequest(async (request, response) => {
    const db = admin.firestore();
    const userId = request.body['userId'];
    const firebaseId = request.body['firebaseId'];

    const now = Date.now();

    const userRef = db.collection('users').doc(userId);
    const updateResult = await userRef.update({
        phoneVerified: true
    });

    const x = await admin.auth().setCustomUserClaims(firebaseId,{folder:userId});
    console.log('folder set');

    if (Number(updateResult.writeTime) > now) {
        return response.json({
            status: 1,
            message: 'Phone verified successfully',
            result: null
        });
    } else {
        return response.json({
            status: 0,
            message: 'An error occurred, please try again later',
            result: null
        });
    }

});
但是如果这条线

const x = await admin.auth().setCustomUserClaims(firebaseId,{folder:userId});
已注释,该函数将成功部署,我已将firebase管理员导入为

import * as admin from 'firebase-admin';
这是日志

0 info it worked if it ends with ok
1 verbose cli [ '/home/me/.nvm/versions/node/v9.5.0/bin/node',
1 verbose cli   '/home/me/.nvm/versions/node/v9.5.0/bin/npm',
1 verbose cli   '--prefix',
1 verbose cli   '/home/me/Documents/TfmFirebase/functions',
1 verbose cli   'run',
1 verbose cli   'lint' ]
2 info using npm@5.6.0
3 info using node@v9.5.0
4 verbose run-script [ 'prelint', 'lint', 'postlint' ]
5 info lifecycle functions@~prelint: functions@
6 info lifecycle functions@~lint: functions@
7 verbose lifecycle functions@~lint: unsafe-perm in lifecycle true
8 verbose lifecycle functions@~lint: PATH: /home/me/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/me/Documents/TfmFireba$
9 verbose lifecycle functions@~lint: CWD: /home/me/Documents/TfmFirebase/functions
10 silly lifecycle functions@~lint: Args: [ '-c', 'tslint -p tslint.json' ]
11 silly lifecycle functions@~lint: Returned: code: 2  signal: null
12 info lifecycle functions@~lint: Failed to exec lint script
13 verbose stack Error: functions@ lint: `tslint -p tslint.json`
13 verbose stack Exit status 2
13 verbose stack     at EventEmitter.<anonymous> (/home/me/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:285:16)
13 verbose stack     at EventEmitter.emit (events.js:160:13)
13 verbose stack     at ChildProcess.<anonymous> (/home/me/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:160:13)
13 verbose stack     at maybeClose (internal/child_process.js:943:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5)
14 verbose pkgid functions@
15 verbose cwd /home/me/Documents/TfmFirebase
16 verbose Linux 4.13.0-37-generic
17 verbose argv "/home/me/.nvm/versions/node/v9.5.0/bin/node" "/home/me/.nvm/versions/node/v9.5.0/bin/npm" "--prefix" "/home/me/Documents/TfmFirebase/functions" "run" $
18 verbose node v9.5.0
19 verbose npm  v5.6.0
20 error code ELIFECYCLE
21 error errno 2
22 error functions@ lint: `tslint -p tslint.json`
22 error Exit status 2
23 error Failed at the functions@ lint script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 2, true ]
0信息如果它以ok结尾,它就工作了
1 verbose cli['/home/me/.nvm/versions/node/v9.5.0/bin/node',
1 verbose cli'/home/me/.nvm/versions/node/v9.5.0/bin/npm',
1详细cli'--前缀',
1个详细cli“/home/me/Documents/TfmFirebase/functions”,
1详细cli“运行”,
1详细cli“lint”]
2信息使用npm@5.6.0
3信息使用node@v9.5.0
4详细的运行脚本['prelint','lint','postlint']
5信息生命周期功能@~prelint:功能@
6信息生命周期功能@~lint:功能@
7详细生命周期函数@~lint:生命周期中的不安全perm为true
8个详细的生命周期函数@~lint:PATH:/home/me/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm lifecycle/node gyp bin:/home/me/Documents/TfmFireba$
9个详细的生命周期函数@~lint:CWD:/home/me/Documents/TfmFirebase/functions
10个愚蠢的生命周期函数@~lint:Args:['-c','tslint-ptslint.json']
11个生命周期函数@~lint:返回:代码:2信号:null
12信息生命周期函数@~lint:无法执行lint脚本
13详细堆栈错误:functions@lint:`tslint-ptslint.json`
13详细堆栈退出状态2
13 EventEmitter上的详细堆栈。(/home/me/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm lifecycle/index.js:285:16)
13 EventEmitter.emit上的详细堆栈(events.js:160:13)
13子进程上的详细堆栈。(/home/me/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm lifecycle/lib/spawn.js:55:14)
13 ChildProcess.emit上的详细堆栈(events.js:160:13)
13 maybeClose的详细堆栈(internal/child_process.js:943:16)
13 Process.ChildProcess.\u handle.onexit处的详细堆栈(internal/child\u Process.js:220:5)
14个详细的pkgid函数@
15详细的cwd/home/me/Documents/TfmFirebase
16详细Linux 4.13.0-37-generic
17详细argv“/home/me/.nvm/versions/node/v9.5.0/bin/node”“/home/me/.nvm/versions/node/v9.5.0/bin/npm”“--前缀”“/home/me/Documents/TfmFirebase/functions”“run”$
18详细节点v9.5.0
19详细的npm v5.6.0
20错误代码ELIFECYCLE
21错误2
22错误函数@lint:`tslint-p tslint.json`
22错误退出状态2
23函数@lint脚本出现错误。
23错误这可能不是npm的问题。上面可能还有其他日志输出。
24详细退出[2,正确]

我不知道出了什么问题。有人能说出代码的错误吗?

如果查看正常输出(此处未显示),而不是详细日志(此处显示),则问题很明显。这就是tslint告诉您该怎么做的地方:

Expression has type `void`. Put it on its own line as a statement.
返回包含
void
的承诺。换句话说,它不会生成任何数据供调用方使用。TypeScript告诉您,将
void
分配给
x
是没有意义的,您不应该分配任何内容:

await admin.auth().setCustomUserClaims(firebaseId,{folder:userId});
console.log('folder set');

几分钟前我发现了,我删除了
const x=
,然后简单地
等待调用完成。谢谢您的时间,您能就安全规则有一个详细的说明吗