Skip to content

[Firestore] admin.firestore.Timestamp.now() fails with firebase-admin 11, works in 10.3 (emulator) #1827

@tofsjonas

Description

@tofsjonas

[REQUIRED] Step 2: Describe your environment

  • Operating System version: macOS Monterey 12.4
  • Firebase SDK version: 11.3.0
  • Firebase Product: Firestore
  • Node.js version: v16.14.2
  • NPM version: 8.15.0

tsconfig.json

{
  "compilerOptions": {
    "lib": ["ES2020"],
    "module": "commonjs",
    "target": "ES2020",
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "outDir": "dist",
    "sourceMap": true,
    "strict": true,
    "allowSyntheticDefaultImports": true
  },
  "compileOnSave": true,
  "include": ["src"],
  "exclude": ["node_modules", "**/node_modules/*"]
}

package.json

{
  "name": "functions",
  "scripts": {
    "build": "rm -rf dist && tsc",
    "watch": "rm -rf dist && npx tsc -w --skipLibCheck --noEmitOnError",
    "serve": "firebase emulators:start --import=./.cache --export-on-exit",
    "deploy": "firebase deploy --only hosting",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "16"
  },
  "main": "dist/index.js",
  "dependencies": {
    "@firebase/app-compat": "^0.1.29",
    "axios": "^0.27.2",
    "cors": "^2.8.5",
    "firebase-admin": "^11.0.0",
    "firebase-functions": "^3.22.0",
    "stripe": "^9.14.0"
  },
  "devDependencies": {
    "@firebase/app-types": "^0.7.0",
    "@types/cors": "^2.8.12",
    "@types/stripe-v3": "^3.1.27",
    "firebase-functions-test": "^2.2.0",
    "jest": "^28.1.3",
    "typescript": "^4.7.4"
  },
  "private": true
}

[REQUIRED] Step 3: Describe the problem

admin.firestore.Timestamp.now() throws TypeError: Cannot read properties of undefined (reading 'now') (~same with admin.firestore.increment(1)).

In emulator, I haven't dared try it "live".

Steps to reproduce / Relevant Code:

test.ts

import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'
export const test = functions.region('europe-west1').https.onRequest(async (request, response) => {
  const res = await admin.firestore().collection('mytable').add({
    createdAt: admin.firestore.Timestamp.now(),
  })
  response.json({
    id: res.id,
  })
})

Result:

TypeError: Cannot read properties of undefined (reading 'now')

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions