Material-UI依赖关系:'' react-tap-event-plugin''没有导出的成员' injectTapEventPlugin'

时间:2016-06-20 08:56:54

标签: reactjs typescript material-ui typescript-typings

我正在使用react / typescript / material-ui / webpack。 Material-UI依赖于react-tap-event-plugin,我在导入injectTapEventPlugin函数时出现问题,这是我得到的错误:

error TS2305: Module ''react-tap-event-plugin'' has no exported member 'injectTapEventPlugin'.

要添加react-tap-event-plugin的定义,我使用了以下命令:

sudo typings install dt~react-tap-event-plugin --save --global --save-dev

index.d.ts看起来像这样:

declare module 'react-tap-event-plugin'{
    interface StrategyOverrides {
         shouldRejectClick?: (lastTouchEventTimestamp: Date, clickEventTimestamp: Date) => boolean;
    }

    var injectTapEventPlugin: (strategyOverrides?: StrategyOverrides) => void;

    export = injectTapEventPlugin;
}

我正在尝试使用以下方法在我的应用中导入插件:

import {injectTapEventPlugin} from 'react-tap-event-plugin';
injectTapEventPlugin();

关于我遗失的任何想法?

2 个答案:

答案 0 :(得分:4)

取自github项目中的测试文件

// since the export is a function, this is the only actual correct way:
import injectTapEventPluginRequire = require("react-tap-event-plugin");

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/react-tap-event-plugin/react-tap-event-plugin-tests.ts

答案 1 :(得分:4)

如果您的目标是ES6并且您尝试使用accepted solution解决此问题,则可能会收到以下打字稿警告/错误:

  

"定位ECMAScript 6模块时无法使用导入分配。请考虑使用import * as ns from "mod"import {a} from "mod"或其他模块格式。

- 已经@ thomas-jespersen评论了该解决方案。

错误消息提供了一些解决方法的建议,但我无法让它们起作用 - "开箱即用"如建议。然而,我确实通过这样做(它可能更精确)得到它的工作:

... import * as injectTapEventPluginExport from 'react-tap-event-plugin'; const injectTapEventPlugin = (injectTapEventPluginExport as any).default; injectTapEventPlugin(); ...

它看起来不漂亮,但似乎确实有效。

我觉得inject-tap-event-plugin的不稳定或过时的打字稿定义是这个问题的真正原因。