无法转换ES7"包括"云功能

时间:2017-12-08 05:51:50

标签: typescript firebase google-cloud-functions

我试图在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;
      }

这确实有效,但它让我觉得我已经把它砍了一下。任何人都可以指出更好的答案吗?

1 个答案:

答案 0 :(得分:3)

原因是当您使用tsc将输入文件指定为tsc *.ts时,tsconfig.json文件将被忽略。

来自documentation

  

在命令行中指定输入文件时,tsconfig.json   文件被忽略。

要修复此运行tsc而不使用任何参数。这将使用您的tsconfig.json文件。