[英]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
它就會通過。
我錯過了什么?
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.