javascript - Webpack require 方法返回意外的对象

标签 javascript webpack babeljs

我最近将 webpack 从版本 1.12.9 升级到 1.12.13,并将 babel 从 5 升级到 6,升级后部分代码中断:

const DevTools = require('../components/DevTools.js')
DevTools.instrument()

我收到以下错误:

Uncaught TypeError: DevTools.instrument is not a function

然后我在调用 instrument() 之前添加了 console.log(DevTools),这是 Chrome 控制台中的输出:

> Object {__esModule: true}
  > __esModule: true
  > default: DevTools(props, context)
  > __proto__: Object

为了解决此问题,我使用了 import 而不是 require:

import DevTools from '../components/DevTools.js'

再次打印 console.log(DevTools) 会给出以下结果:

DevTools(props, context) {
      _classCallCheck(this, DevTools);
      var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));
      if (!props.store && !…

这正是我想要导入的并且现在工作正常。

有人知道为什么会发生这种情况吗?这个错误是因为webpack或者babel升级导致的吗?

最佳答案

您也可以通过添加 default 有条件地要求它们,而不是总是导入 DevTools

const DevTools = require('../components/DevTools.js').default;

关于javascript - Webpack require 方法返回意外的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35497618/

相关文章:

javascript - 当我在移动设备上滚动时,如何更改 <nav> 的颜色?

javascript - YouTube Iframe 嵌入导致 IE7 中的重定向

jestjs - Jest - 如何在 babel-jest 中使用根斜杠导入?

javascript - 从 undefined 解构时避免错误

javascript - 如何在 CoffeeScript 上创建音频 onending 事件

javascript - 这个表达式在 javascript 中是什么意思?

javascript - div在无限循环jquery中只翻转一次

css - 提取主题感知样式的 CSS 差异

css - 防止字体嵌入到 webpack 生成的 css 中

javascript - 在 webpack 中将库配置为外部库不适用于 UMD 作为 libraryTarget