我试图在一个VueJS项目中使用类型记录,该项目有一个子目录functions,用于在服务器端执行云函数。
我想使用ES2017特性Array.prototype.includes,我认为通过将以下tsconfig.json添加到函数目录中实现了这一点:
{
"compilerOptions": {
"lib": ["es2016", "es2017"],
"target": "es6",
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"strict": true
}
}如果我进入函数目录并运行tsc转换程序,它将无错误地运行。另外,我的vs代码编辑器没有突出显示使用“include”的任何问题。但是,随着Firebase文档上建议的配置,我在我的firebase.json配置文件中添加了以下内容:
"functions": {
"predeploy": "npm --prefix functions run build"
}反过来,我的package.json在函数目录中将build脚本列出如下:
"scripts": {
"build": "tslint *.ts && tsc *.ts"
},但是,当我运行firebase deploy --only functions时,它正确地运行了构建脚本,但是它会给出以下错误:
index.ts(44,31):错误TS2339: Property‘include’在类型'string[]‘上不存在。
我认为这可能是因为它错误地使用了根目录中的tsconfig.json (也就是VueJS正在使用的目录),而不是函数目录中的那个,但我不完全确定。
我可以通过将build命令更改为:
"build": "tslint *.ts && tsc *.ts --lib 'es7'"这确实有效,但让我觉得我已经把它砍了一点。有人能指出一个更好的答案吗?
发布于 2017-12-08 06:22:24
原因是当您使用tsc指定输入文件时,tsc *.ts会忽略tsconfig.json文件。
来自文档
当在命令行上指定输入文件时,
tsconfig.json文件将被忽略。
若要修复此问题,请运行不带任何参数的tsc。这将使用您的tsconfig.json文件。
https://stackoverflow.com/questions/47708487
复制相似问题