栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

不需要()Babel 6.x中的默认导出值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

不需要()Babel 6.x中的默认导出值

TL; DR

你必须用

require('./app').default();

说明

Babel 5曾经具有以下兼容性问题

exportdefault
:如果一个模块仅包含一个导出,并且它是默认导出,则将其分配给
module.exports
。因此,例如,您的模块 app.js

export default function () {}

将被翻译成这个

"use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports["default"] = function () {};module.exports = exports["default"];

这样做 纯粹是 为了与

require
-ing
Babel转换的模块兼容(就像您所做的那样)。这也不一致。如果模块同时包含命名和默认导出,则不能使用
require
-d。

实际上,根据ES6模块规范,默认导出与名称为的命名导出 没有区别

default
。它只是语法糖,可以在编译时静态解析,因此

import something from './app';

与此相同

import { default as something } from './app';

话虽如此,Babel 6似乎决定在转译模块时放弃对互操作性的攻击。现在,您的模块 app.js 被编译为

'use strict';Object.defineProperty(exports, "__esModule", {    value: true});exports.default = function () {};

如您所见,不再分配到

module.exports
。对于
require
这个模块,你需要做

require('./app').default();


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415157.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号