`import XXX from` returns undefined 而 `const XXX = require` 在 ts-node + Gulp 中工作

`import XXX from` returns undefined while `const XXX = require` works in ts-node + Gulp

有效(文件为 gulpfile.ts):

const Gulp = require("gulp");

不起作用(没有 TypeScript 错误,但 Gulpundefined):

import Gulp from "gulp";

tsconfig.json:

{
  "compilerOptions": {

    "target": "ES2020",
    "module": "CommonJS",
    "moduleResolution": "node",
    "allowSyntheticDefaultImports": true,
    "experimentalDecorators": true,

    "strict": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,

    "allowJs": false,
    "skipLibCheck": true,

    "baseUrl": "./",
    "paths": {}
  }
}

命令:

gulp <Any declared Gulp task>

通过编写 import Gulp from "gulp",您正在尝试导入 gulpdefault 导出,这似乎不存在。

TypeScript 中 const Gulp = require("gulp"); 的实际等价物是“将所有导出导入单个变量”语法:

import * as Gulp from 'gulp';

如果需要 import Gulp from "gulp" 语法,可以使用 esModuleInterop TypeScript option

自动添加 default 导入

有关 CommonJS 互操作性和 esModuleInterop TypeScript option 的更多信息,请参见我的其他回答: