【问题标题】:Material-UI dependencies: ''react-tap-event-plugin'' has no exported member 'injectTapEventPlugin'Material-UI 依赖项:“react-tap-event-plugin”没有导出成员“injectTapEventPlugin”
【发布时间】:2016-10-21 11:04:46
【问题描述】:

我正在使用 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();

知道我缺少什么吗?

【问题讨论】:

  • 试试这个import injectTapEventPlugin = require("react-tap-event-plugin");
  • 它的工作!谢谢

标签: reactjs typescript material-ui typescript-typings


【解决方案1】:

取自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

【讨论】:

  • 我收到以下错误:错误 TS1202:以 ECMAScript 6 模块为目标时无法使用导入分配。考虑使用 'import * as ns from "mod"'、'import {a} from "mod"'、'import d from "mod"' 或其他模块格式。
  • 也许有人想在这里使用这个功能github.com/facebook/react/issues/11689提到Remove support for TapEventPlugin
【解决方案2】:

如果您以 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 的不稳定或过时的打字稿定义是造成这种情况的真正原因。

【讨论】:

    猜你喜欢
    • 2017-02-03
    • 1970-01-01
    • 2018-09-10
    • 2019-01-27
    • 1970-01-01
    • 2018-05-22
    • 2018-03-19
    • 2021-03-10
    • 1970-01-01
    相关资源
    最近更新 更多