Tìm kiếm trang web

typescript - Không thể tìm thấy module '@env' hoặc các khai báo kiểu tương ứng của nó


Tại sao tôi nhận được thông báo lỗi TypeScript này và làm thế nào để khắc phục nó?

Không thể tìm thấy module '@env' hoặc các khai báo kiểu tương ứng của nó

Điều này xảy ra khi tôi sử dụng cái này:

import { FB_ID } from '@env';

Nó nên được đặt tên không phải là @env, nó nên được đặt tên là 'react-native-dotenv' nhưng trong cấu hình của tôi tôi đã đặt tên nó là @env để tôi có thể sử dụng nó, và tôi có thể lấy giá trị FB_ID. Nó hoạt động nhưng tôi nhận được lỗi TypeScript.

Đây là nơi tôi đặt moduleName:

      ['module:react-native-dotenv', {
        "envName": "APP_ENV",
        "moduleName": "@env",
        "path": ".env",
        "blocklist": null,
        "allowlist": null,
        "safe": false,
        "allowUndefined": true,
        "verbose": false
      }]

Vậy làm sao tôi có thể sửa nó?

tsconfig:

{
  "extends": "expo/tsconfig.base",
  "compilerOptions": {
    "strict": true,
    "baseUrl": ".", // this must be specified if "paths" is specified.
    "paths": {
      "@env": ["node_modules/react-native-dotenv"] // this mapping is relative to "baseUrl"
    }
  }
}

Câu trả lời #1

  • Tạo một thư mục types trong thư mục nguồn của bạn.
  • Tạo một tệp có tên env.d.ts trong thư mục types.
  • Định nghĩa các biến môi trường của bạn dưới dạng chuỗi.

    declare module '@env' {
      export const FB_ID: string;
    
      // other ones
    }
    

Câu trả lời #2

Bạn có lẽ nên xem thuộc tính paths của compilerOptions trong tệp tsconfig của bạn, nó trông giống như cái gì đó như sau:

{
  "compilerOptions": {
    "baseUrl": ".", // this must be specified if "paths" is specified.
    "paths": {
      "@env": ["node_modules/<path to the module dist>"] // this mapping is relative to "baseUrl"
    }
  }
}

Điều này sẽ thông báo cho TypeScript rằng @env trỏ đến module và sẽ ngừng báo lỗi về nó. Nếu không, nó sẽ không biết cách giải quyết và sẽ chỉ tìm kiếm node_modules/@env

Bài viết liên quan