首页 文章

如何从寓言中的NPM模块导入函数?

提问于
浏览
3

我正在尝试在Fable项目中使用NPM包normalize-wheel .

我已确认该软件包已下载到 node-modules 文件夹 .

符合documentationthis article我正在使用以下F#代码:

type INormalizedWheel =
    abstract member pixelX: float
    abstract member pixelY: float
    abstract member spinX: float
    abstract member spinY: float

[<Import("normalizeWheel", "normalize-wheel")>]
let normalizeWheel (we: React.WheelEvent) : INormalizedWheel = jsNative

...

let x = normalizeWheel wheelEvent

但是,每当到达最后一行时,都会抛出JS错误消息 "Object(...) is not a function" . 在调试器中, normalizeWheel 的类型显示为 undefined .

我猜导入不起作用,但我做错了什么?

1 回答

  • 6

    我们来看看normalize-wheel / index.js

    module.exports = require('./src/normalizeWheel.js');
    

    这告诉我们没有任何名为normalizeWheel的函数(否则它将是module.exports.normalizeWheel = ...) . 这意味着我们需要导入默认函数 . 这可以这样做:

    [<Import("default", "normalize-wheel")>]
    let normalizeWheel (we: React.WheelEvent) : INormalizedWheel = jsNative
    
    // Or
    let normalizeWheel (we: React.WheelEvent) : INormalizedWheel = importDefault "normalize-wheel"
    

相关问题