簡體   English   中英

無法從“index.cjs.js”中找到模塊“firebase-admin”

[英]Cannot find module 'firebase-admin' from 'index.cjs.js'

我在 Jest 上使用@firebase/testing ,但由於它已被棄用並指示使用 new one ,我決定轉向@firebase/rules-unit-testing

這是我剛剛切換它們的代碼。

import { initializeAdminApp } from "@firebase/rules-unit-testing";
import "babel-polyfill";

it("is ok", async () => {
  const admin = initializeAdminApp({ projectId: "my-project" });

  try {
    const doc = admin.firestore().collection("items").doc("item-1");
    await doc.set({ name: "Item 1" });
    const ss = await doc.get();
    expect(ss.data()?.name).toBe("Item 1");
  } finally {
    await admin.delete();
  }
});

當我用emu運行這個測試時,它會導致“無法從'index.cjs.js'中找到模塊'firebase-admin'”錯誤。

Cannot find module 'firebase-admin' from 'index.cjs.js'                      
                                                                                              
      3 |                                       
      4 | it("is ok", async () => {                                                              
    > 5 |   const admin = initializeAdminApp({ projectId: "my-project" });                           
        |                 ^

如果它是舊的@firebase/testing它就會通過。

我錯過了什么?

  • Node.js v14.8.0
  • 開玩笑 25.5.4
  • 火力基地 7.21.1
  • firebase 工具 8.11.2
  • @firebase/測試 0.20.11
  • @firebase/rules-unit-testing 1.0.4

firebase-admin是一個 npm 包。 剛剛安裝它並且一切正常。

$ npm install -D firebase-admin

我開始使用firebase-admin@^10.0.1並且在運行jest測試時出現此錯誤。 它無法按預期將“firebase-admin/app”映射到“firebase-admin/lib/app”。 所以我在jest.config.ts 上手動映射了這個:

import { pathsToModuleNameMapper } from 'ts-jest/utils';
import { compilerOptions } from './tsconfig.json';

...
export default {
 ...
 moduleNameMapper: pathsToModuleNameMapper(
    {
      ...compilerOptions.paths,
      'firebase-admin/*': ['node_modules/firebase-admin/lib/*'],
    },
    {
      prefix: '<rootDir>',
    },
  ),
...
}

這對我有用。

請注意,我的tsconfig.json是這樣的:

{
  "compilerOptions": {
    ...
    "baseUrl": ".",
    "paths": {
      "modules/*": [
        "src/modules/*"
      ],
      "shared/*": [
        "src/shared/*"
      ],
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM