【问题标题】:react-redux : fail to import classesreact-redux:导入类失败
【发布时间】:2018-04-26 20:37:48
【问题描述】:

我正在尝试在 egghead.io 上开设“redux 入门”课程

但是,我不想像他那样在 jsbin 上使用示例代码。

我想将它与我自己的快递服务器一起使用。因为,如果我们在现实生活中根本无法使用“入门”教程,那还有什么意义呢?

这是课程中使用的代码: http://jsbin.com/wuwezo/74/edit?js,console,output

开头是这样的:

const { connect, Provider } = ReactRedux;
const { combineReducers, createStore } = Redux;

所以我正在尝试使这两条线正常工作。

在我的 index.jsx 文件中,在这两行之上,我导入了 react-redux 和 redux,所以:

import ReactRedux from 'react-redux';
import Redux from 'redux';
const { connect, Provider } = ReactRedux;
const { combineReducers, createStore } = Redux;

然后我运行 webpack(我使用 babel loader):它将 bundle.js 文件放在公共目录中(index.html 所在的位置)。 然后我运行 express 服务器,并访问 index.html。

我在控制台中得到了这个: 火狐: "TypeError: _reactRedux2.default 未定义[了解更多]"

铬: “未捕获的类型错误:无法读取未定义的属性‘连接’”

谷歌搜索firefox错误,我什么也没得到。

但对于 Chrome,我知道我使用“const {...}”得到了未定义。

这是一个 babel loader 的问题吗?

我错过了什么?

【问题讨论】:

标签: reactjs redux


【解决方案1】:

当这些模块不是 es6 模块时,您正在尝试使用 es6 导入。只需返回使用 require 即可。

const { connect, Provider } = require('react-redux');
const { combineReducers, createStore } = require('redux');

以下选项也应该适合您:

import * as ReactRedux from 'react-redux';
import * as Redux from 'redux';
const { connect, Provider } = ReactRedux;
const { combineReducers, createStore } = Redux;

还有:

import { connect, Provider } from 'react-redux';
import { combineReducers, createStore }  from 'redux';

【讨论】:

  • 但是我该怎么做才能使代码使用相同的 2 行代码工作? const { connect, Provider } = ReactRedux; const { combineReducers, createStore } = Redux;
  • 做:const ReactRedux = require('react-redux')之前还不够吗?
  • 谢谢!我可以做import React from 'react';,它可以在代码中工作。但是对于 ReactRedux 和 Redux,我必须使用 const ReactRedux = require('react-redux'); const Redux = require('redux');import {connect} from 'react-redux';
【解决方案2】:

要使用 es6,你可以在你的 webpack 中使用"presets": ["es2016"]。 文档可以参考here

【讨论】:

    猜你喜欢
    • 2019-09-23
    • 2022-06-22
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 2018-03-23
    • 2016-02-11
    • 2018-07-24
    • 1970-01-01
    相关资源
    最近更新 更多