Nestjs:导入模块未定义,但可以导入模块中的方法和函数
Nestjs: import modules undefined, but methods and functions from modules can be imported
我正在使用 Nestjs
和 WebStorm & TS 4.2.3^latest。
我面临的问题有点难运行ge。例如,一些模块,如 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'; // 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 没有显示任何代码错误,直到我 运行 代码。
tsconfig.json 模块部分,只是为了确定:"module": "commonjs"
、package.json 根本没有 module
部分。
IDE 在这种情况下,有点误导我。差点忘了,我现在正在和 TS 打交道。有些模块似乎没有默认导出,所以:
- 您应该像他们一样导入:
import * as fs from 'fs';
- 或者,另一个选项是启用:
"esModuleInterop": true,
在您的 tsconfig.json
我正在使用 Nestjs
和 WebStorm & TS 4.2.3^latest。
我面临的问题有点难运行ge。例如,一些模块,如 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'; // 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 没有显示任何代码错误,直到我 运行 代码。
tsconfig.json 模块部分,只是为了确定:"module": "commonjs"
、package.json 根本没有 module
部分。
IDE 在这种情况下,有点误导我。差点忘了,我现在正在和 TS 打交道。有些模块似乎没有默认导出,所以:
- 您应该像他们一样导入:
import * as fs from 'fs';
- 或者,另一个选项是启用:
"esModuleInterop": true,
在您的tsconfig.json