node.js - Nestjs:导入模块未定义,但可以导入模块中的方法和函数

标签 node.js typescript webstorm nestjs ts-node

我正在使用 Nestjs使用 WebStorm 和 TS 4.2.3^latest。
我面临的问题有点奇怪。例如,一些模块,如 axios可以像往常一样安装、导入和使用。但是有些模块,尤其是 Nodejs Core,比如 fspath , 不能作为模块导入。 但是 他们的方法可以导入使用就好了!

//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'; // working fine
import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  async test(input: string): Promise<void> {
    await axios.get() // working fine

    await path.join() // Cannot read property 'join' of undefined

    //BUT await join() // Works fine!
  }
}

我只有一个 tsconfig.json这是由 Nest Cli 生成的。我正在通过 npm start:dev -name 启动我的应用程序在我运行代码之前,IDE 不会显示任何代码错误。
Example
tsconfig.json 模块部分,只是为了确定:"module": "commonjs" , package.json 没有 module部分。

最佳答案

在这种情况下,IDE 有点误导我。差点忘了,我现在正在处理 TS。一些模块似乎没有默认导出,所以:

  • 你应该像他们一样导入:import * as fs from 'fs';
  • 或者,另一个选项是启用:"esModuleInterop": true,在您的 tsconfig.json
  • 关于node.js - Nestjs:导入模块未定义,但可以导入模块中的方法和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67032343/

    相关文章:

    node.js - Discord.js : TypeError: client. channels.get 不是函数

    angular - Jest,一次测试多个 Angular 库

    javascript - 使用递归和 yield 关键字提取嵌套列表的 Typescript 函数

    intellij-idea - 如何使用实时模板将 $SELECTION$ 转换为蛇形案例(例如)?

    javascript - 如何在 webstorm 中使用 GIT

    javascript - 检测客户端断线WebSocket

    javascript - ios-deploy 安装失败

    typescript - ComponentInstruction 和 CanActivate 在 angular 2 rc1 中不可用

    typescript - TS1109,WebStorm 对可选链接的 react 不正确

    javascript - 如何重构这个函数以将其认知复杂度从 16 降低到允许的 15?