Nestjs: インポートモジュールは未定義ですが、モジュールのメソッドと関数はインポートできます 質問する

Nestjs: インポートモジュールは未定義ですが、モジュールのメソッドと関数はインポートできます 質問する

NestjsWebStorm & TS 4.2.3^最新版を使用しています。

私が直面している問題は少し奇妙です。たとえば、のような一部のモジュールは、axios通常どおりインストール、インポート、使用できます。しかし、一部のモジュールは、特にNodejs Core、fsまたはpathモジュールとしてインポートできません。しかしそれらのメソッドは問題なくインポートして使用できます。

// ERROR: Module undefined on run:dev, but no error in IDE
import path from 'path';
import fs from 'fs';

// Working fine
import { join } from 'path';
import { readFileSync } from 'path';

手動でインストールした場合でも、正しい TS タイプが使用されていることは確かです。例:

import axios from 'axios';
import path from 'path'; // path is undefined
import { join } from 'path';
import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  async test(input: string): Promise<void> {
    // working fine
    await axios.get() 
    // Cannot read property 'join' of undefined
    await path.join() 

    // await join() Works fine!
  }
}

tsconfig.jsonNest Cli によって生成されたものが1 つだけあります。 経由でアプリを起動していますnpm start:dev -nameが、コードを実行するまで IDE ではコードにエラーが表示されません。

例

tsconfig.json モジュール部分、念のため: "module": "commonjs"、package.json にはmodule部分がまったくありません。

ベストアンサー1

この場合、IDE は私を少し誤解させます。TS を扱っていることをほとんど忘れていました。一部のモジュールにはデフォルトのエクスポートがないようです。

  • これらを次のようにインポートする必要があります:import * as fs from 'fs';
  • または、別のオプション"esModuleInterop": true,として、tsconfig.json

おすすめ記事