无法解析模块“firebase-admin/app”的路径(ESLint)

Ant*_*ños 25 firebase typescript eslint firebase-admin

我正在尝试按照文档连接到我的 Firebase 应用程序但 ESLint 正在抱怨。我已经检查过相关问题,但那里提出的解决方案似乎对我不起作用。我有以下 .eslint.js 文件:

module.exports = {
  extends: [
    'airbnb-typescript/base',
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:typescript-sort-keys/recommended',
    'plugin:import/recommended',
    'prettier'
  ],
  parser       : '@typescript-eslint/parser',
  parserOptions: {
    ecmaFeatures: {
      modules: true
    },
    ecmaVersion: 6,
    project    : './tsconfig.json',
    sourceType : 'module'
  },
  plugins: ['@typescript-eslint', 'typescript-sort-keys', 'sort-keys-fix'],
  rules  : { ... }
}
Run Code Online (Sandbox Code Playgroud)

abr*_*ham 29

Firebase Admin v10开始,它用于exports定义package.json入口点。eslint-plugin-import 不支持 exports。在此之前,您必须import/no-unresolved完全禁用或针对每次违规行为禁用。

// eslint-disable-next-line import/no-unresolved
Run Code Online (Sandbox Code Playgroud)


Fer*_*ena 6

正如这个 github 问题中提到的:#1359 看起来 import/no-unresolved 是自定义 ESLint 插件的一部分。我相信这是 eslint-plugin-import 中的错误/限制(请参阅问题#1868)。该代码确实有效,并且由 tsc 编译。VSCode 还可以成功解析模块入口点。

因此,我现在只需使用以下 eslint 规则来抑制 firebase-admin 的警告:

'import/no-unresolved': [
      'error',
      {
        ignore: ['^firebase-admin/.+'],
      },
    ],
Run Code Online (Sandbox Code Playgroud)

这对我有用,因为该解决方案尚未合并到 Eslint 中。