'Detected an object of type "Timestamp" that doesn't match the expected instance

I'm wondering why is the Timestamp object is not working as I expect?

It works in test environment (I use Mocha), but throws error when it has been deployed.

index.ts

import { Timestamp, QuerySnapshot } from "@google-cloud/firestore";
....

async someFunction() {
   let col = firestore.collection("mycollection");
   let now = Timestamp.now();
   let twentyMinsAgo = Timestamp.fromMillis(now.toMillis() - (1200 * 1000));

   return col
      .where('LastEdited', '>=', twentyMinsAgo) //This throws error
      .get()
}

Stack Trace

Argument "value" is not a valid QueryValue. 
Detected an object of type "Timestamp" that doesn't match the expected instance. 
Please ensure that the Firestore types you are using are from the same NPM package.
      at Validator.(anonymous function).err [as isQueryValue] (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/validate.js:99:27)
      at CollectionReference.where (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/reference.js:940:25)

package.json

"dependencies": {
   ....
   "@google-cloud/firestore": "^0.16.0",
   "firebase-admin": "~6.0.0",
   "firebase-functions": "^2.0.5"
}


Solution 1:[1]

when using firebase admin avoid importing and using any of the client side package directly

so instead of

 import * as admin  from "firebase-admin";
 import firebase from "firebase/app";

 admin.firestore().collection("name").set({
       date: firebase.firestore.Timestamp.now()
})

use this instead

 import * as admin  from "firebase-admin";

 admin.firestore().collection("name").set({
       date: admin.firestore.Timestamp.now()
})

2022 EDIT:

For newer version of Firebase ^10.0.2; Timestamp can be imported directly

import * as admin  from "firebase-admin";
import { Timestamp } from "firebase-admin/firestore"; 
 
admin.firestore().collection("name").set({
   date: Timestamp.now(),
})

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1