16

I've setup a Firebase project to create some basic Firebase Functions.
In the project I'm using TypeScript

Following the Firebase official documentation I created my project.

The last step, firebase deploy --only functions, gave an error with the tsc command.

$ firebase deploy --only functions

=== Deploying to ‘my-project’…

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint

> functions@ lint /path/to/functions
> tslint --project tsconfig.json

Running command: npm --prefix "$RESOURCE_DIR" run build

> functions@ build /path/to/functions
> tsc

node_modules/firebase-functions/lib/function-builder.d.ts(60,95): error TS1005: ';' expected.
node_modules/firebase-functions/lib/function-builder.d.ts(60,96): error TS1003: Identifier expected.
node_modules/firebase-functions/lib/function-builder.d.ts(60,116): error TS1005: ';' expected.
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! functions@ build: `tsc`
npm ERR! Exit status 2
npm ERR! 
npm ERR! Failed at the functions@ build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /some/path/.npm/_logs/2019-02-03T00_10_30_573Z-debug.log

Error: functions predeploy error: Command terminated with non-zero exit code2

Having trouble? Try firebase deploy --help

It seems that some of the Firebase library code does not pass the tsc compile/transpile step. I'm looking for a way to make this deploy step pass.

I've followed the suggestion given at this GitHub issue, which included:

  • Adding --skipLibCheck to the tsc command
  • Adding skipLibCheck to the project's generated functions/tsconfig.json
  • Adding isolateModules to functions/tsconfig.json
  • Adding ./functions/node_modules/@types to the typeRoots array in the functions/tsconfig.json file.
  • Adding dom to compilerOptions.lib in functions/tsconfig.json

None of the above steps have worked for me.

How can I make my deployment to Firebase succeed?

Doug Stevenson
  • 297,357
  • 32
  • 422
  • 441
Rick Slinkman
  • 643
  • 10
  • 23

2 Answers2

10

Ran into same issue, was able to deploy after upgrading typescript library to 3.3.1 version and do npm install.

In package.json file set "devDependencies": { "tslint": "~5.8.0", "typescript": "~3.3.1" },

Note: you can remove all changes described in your post.

Maigais
  • 242
  • 3
  • 5
  • Thank you, I was using `typescript: 2.8.4` and updating to `~3.1.1` did the job. – Rick Slinkman Feb 03 '19 at 11:27
  • 1
    This answer didn't fix the problem for me. But there were several successful solutions in the GitHub issue the OP mentions. I found the one about adding type roots to the tsconfig.json to be the best: https://git.io/JeZrh – samzmann Sep 28 '19 at 13:31
  • 1
    In my experience TS, FB, Angular, Ionic move so quickly that 7month old issue and answer is very outdated. – Maigais Sep 29 '19 at 22:47
7

this works for me : add this line to tsconfig within the functions folder:

"typeRoots": [ "node_modules/@types" ],

This is part of "compilerOptions" block worked for me

Pragati Dugar
  • 262
  • 3
  • 7