我试图在VueJS项目中使用Typescript,该项目有一个子目录functions
,用于在服务器端执行Cloud Functions。
我想使用ES2017功能 Array.prototype.includes ,我想我已经通过将以下tsconfig.json
添加到我的功能目录:
{
"compilerOptions": {
"lib": ["es2016", "es2017"],
"target": "es6",
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"strict": true
}
}
如果我进入函数目录并运行tsc
转换程序,它会正常运行。我的vs-code编辑器也没有强调使用" includes"的任何问题。但是,按照Firebase文档中的建议配置,我已将以下内容添加到我的firebase.json
配置文件中:
"functions": {
"predeploy": "npm --prefix functions run build"
}
反过来,我在函数目录中的package.json
将构建脚本列为:
"scripts": {
"build": "tslint *.ts && tsc *.ts"
},
但是当我运行firebase deploy --only functions
时,它正确运行 build 脚本,但它会出现以下错误:
index.ts(44,31):错误TS2339:属性'包括'类型'字符串[]'。
上不存在
我相信这可能会发生,因为它错误地使用根项目目录中的tsconfig.json
(也就是说,VueJS正在使用的目录)而不是函数目录中的"build": "tslint *.ts && tsc *.ts --lib 'es7'"
但我不完全确定。
我可以通过将构建命令更改为:
来解决这个问题 public ActionResult EditArticle(int id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var typeId = 0;
var catId = 0;
var subCatId = 0;
var viewModel = (from sa in ems.SupportArticles
join ssc in ems.SupportSubCategories on sa.SubCatID equals ssc.SubCatID
join sc in ems.SupportCategories on ssc.CatID equals sc.CatID
join st in ems.SupportTypes on sc.TypeID equals st.TypeID
where sa.ArcticleId == id
select new SupportArticleViewModel { supportArticle = sa, supportSubCat = ssc, supportCat = sc, supportType = st });
foreach (var vm in viewModel)
{
typeId = vm.supportType.TypeID;
catId = vm.supportCat.CatID;
subCatId = vm.supportSubCat.SubCatID;
}
这确实有效,但它让我觉得我已经把它砍了一下。任何人都可以指出更好的答案吗?
答案 0 :(得分:3)
原因是当您使用tsc
将输入文件指定为tsc *.ts
时,tsconfig.json
文件将被忽略。
在命令行中指定输入文件时,
tsconfig.json
文件被忽略。
要修复此运行tsc
而不使用任何参数。这将使用您的tsconfig.json
文件。