`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 错误,但 Gulp
是 undefined
):
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"
,您正在尝试导入 gulp
的 default
导出,这似乎不存在。
TypeScript 中 const Gulp = require("gulp");
的实际等价物是“将所有导出导入单个变量”语法:
import * as Gulp from 'gulp';
如果需要 import Gulp from "gulp"
语法,可以使用 esModuleInterop
TypeScript option
自动添加 default
导入
有关 CommonJS 互操作性和 esModuleInterop
TypeScript option 的更多信息,请参见我的其他回答:
有效(文件为 gulpfile.ts
):
const Gulp = require("gulp");
不起作用(没有 TypeScript 错误,但 Gulp
是 undefined
):
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"
,您正在尝试导入 gulp
的 default
导出,这似乎不存在。
TypeScript 中 const Gulp = require("gulp");
的实际等价物是“将所有导出导入单个变量”语法:
import * as Gulp from 'gulp';
如果需要 import Gulp from "gulp"
语法,可以使用 esModuleInterop
TypeScript option
default
导入
有关 CommonJS 互操作性和 esModuleInterop
TypeScript option 的更多信息,请参见我的其他回答: