【问题标题】:Jest cannot find module firebase-admin/storage imported in packageJest 找不到包中导入的模块 firebase-admin/storage
【发布时间】:2022-04-12 03:09:39
【问题描述】:

我有一个包 admin-sdk 用于多个项目,依赖于 firebase-admin 并导出函数 export function storage(): admin.storage.Storage 以获取对云存储的引用。

这个包在一个 NestJS 应用程序中使用并且工作正常,但是当我使用 Jest 运行测试时,我得到模块未找到错误:

● Test suite failed to run

    Cannot find module 'firebase-admin/storage' from 'node_modules/admin-sdk/dist/firebase/storage.js'

    Require stack:
      node_modules/admin-sdk/dist/firebase/storage.js
      node_modules/admin-sdk/dist/firebase/index.js
      node_modules/admin-sdk/dist/index.js
      src/services/provocation/provocation.service.ts
      src/services/provocation/provocation.service.spec.ts

      at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:306:11)
      at Object.<anonymous> (node_modules/admin-sdk/dist/firebase/storage.js:4:19)

node_modules/admin-sdk/storage.ts

import {Bucket} from "@google-cloud/storage";
import {getStorage, Storage} from "firebase-admin/storage";

let _storage: Storage;

const _buckets: Record<string, Bucket> = {};

export function storage(): Storage {
    if (!_storage) {
        _storage = getStorage(); //admin.storage();
    }


    return _storage;
}

export function bucket(name?: string): Bucket {
    let id = name || "";

    if (!_buckets.hasOwnProperty(id)) {
        _buckets[id] = storage().bucket(name);
    }

    return _buckets[id];
}

两个库都依赖于同一版本的 firebase-admin,即 ^10.0.2

那么为什么会出现这个错误,我该如何解决呢?

【问题讨论】:

    标签: jestjs google-cloud-storage firebase-admin


    【解决方案1】:

    尝试在 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>',
        },
      ),
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 2018-05-16
      • 2017-08-27
      • 1970-01-01
      • 2021-05-15
      • 2019-05-08
      • 2022-07-15
      • 2018-03-31
      • 2020-03-09
      • 2018-03-31
      相关资源
      最近更新 更多