为什么我可以在只支持 CommonJS 模块的库中使用 import 语句?
Why can I use import statements in libraries that only support CommonJS modules?
Ua-parser-js only supports the CommonJS module. And when exporting, the export statement is not found:
if (typeof(exports) !== UNDEF_TYPE) {
// nodejs env
if (typeof module !== UNDEF_TYPE && module.exports) {
exports = module.exports = UAParser;
}
exports.UAParser = UAParser;
} else {
// requirejs env (optional)
if (typeof(define) === FUNC_TYPE && define.amd) {
define(function () {
return UAParser;
});
} else if (typeof window !== UNDEF_TYPE) {
// browser env
window.UAParser = UAParser;
}
}
但是,为什么我可以通过import { UAParser } from 'ua-parser-js'
导入UAParser?此代码显示在以下 SO 答案和 GitHub 问题中。
这有两种工作方式:
- 您的工具链确实将
import { UAParser } from 'ua-parser-js'
语句转换为遗留 const { UAParser } = require('ua-parser-js');
,然后由节点 执行
- 节点 ESM 支持 importing CommonJS modules for compatibility。
module.exports = UAParser;
将作为默认导入提供,exports.UAParser = UAParser;
将在您正在进行的命名导入中提供。
Ua-parser-js only supports the CommonJS module. And when exporting, the export statement is not found:
if (typeof(exports) !== UNDEF_TYPE) {
// nodejs env
if (typeof module !== UNDEF_TYPE && module.exports) {
exports = module.exports = UAParser;
}
exports.UAParser = UAParser;
} else {
// requirejs env (optional)
if (typeof(define) === FUNC_TYPE && define.amd) {
define(function () {
return UAParser;
});
} else if (typeof window !== UNDEF_TYPE) {
// browser env
window.UAParser = UAParser;
}
}
但是,为什么我可以通过import { UAParser } from 'ua-parser-js'
导入UAParser?此代码显示在以下 SO 答案和 GitHub 问题中。
这有两种工作方式:
- 您的工具链确实将
import { UAParser } from 'ua-parser-js'
语句转换为遗留const { UAParser } = require('ua-parser-js');
,然后由节点 执行
- 节点 ESM 支持 importing CommonJS modules for compatibility。
module.exports = UAParser;
将作为默认导入提供,exports.UAParser = UAParser;
将在您正在进行的命名导入中提供。