【发布时间】:2018-05-22 08:28:12
【问题描述】:
我正在尝试在 VueJS 项目中使用 Typescript,该项目有一个子目录 functions 供云函数在服务器端执行。
我想使用 ES2017 功能 Array.prototype.includes,我想我可以通过将以下 tsconfig.json 添加到我的 函数 来实现这一点目录:
{
"compilerOptions": {
"lib": ["es2016", "es2017"],
"target": "es6",
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"strict": true
}
}
如果我进入 functions 目录并运行 tsc 转译器,它运行时不会出错。我的 vs-code 编辑器也没有突出使用“包含”的任何问题。但是,按照 Firebase 文档中的建议配置,我已将以下内容添加到我的 firebase.json 配置文件中:
"functions": {
"predeploy": "npm --prefix functions run build"
}
反过来,我在 functions 目录中的 package.json 的 build 脚本列为:
"scripts": {
"build": "tslint *.ts && tsc *.ts"
},
但是当我运行 firebase deploy --only functions 时,它会正确运行 build 脚本,但随后会出现以下错误:
index.ts(44,31):错误 TS2339:“string[]”类型上不存在属性“includes”。
我相信这可能会发生,因为它错误地使用了根项目目录(也就是 VueJS 正在使用的那个)中的 tsconfig.json 而不是 functions 目录中的那个,但我'不完全确定。
我可以通过将构建命令更改为:
"build": "tslint *.ts && tsc *.ts --lib 'es7'"
这确实有效,但它让我觉得我已经破解了一点。谁能指出更好的答案?
【问题讨论】:
标签: typescript firebase google-cloud-functions