我正尝试在TypeScript AMD网站中使用OSA库的浏览器部分:https://github.com/colinbdclark/osc.js(使用RequireJS。)

我打算至少在使用它的范围内编写定义文件。但是,当我通过require导入(最小化的)osc-browser js文件时:

        //From the require config
        oscbrowser: ["/scripts/lib/osc.js/dist/osc-browser.min"],
...
        oscbrowser: {
            export: "osc"
        },
...
//From the typescript file
declare var osc;


Requirejs在运行时给我以下JavaScript错误:


  未捕获的错误:模块名称“事件”尚未加载
  上下文:_。使用require([])


根据Colin在下面的评论,我已经更新到最新的库,并且错误更改为引用了清单库。


  未捕获的错误:模块名称“ slip”尚未加载
  上下文:_。使用require([])


当我通过require config拉入所有组件时,如下所示:

    EventEmitter: ["/scripts/lib/eventEmitter/EventEmitter"],
    slip: ["/scripts/lib/slip.js/dist/slip.min"],
    osc: ["/scripts/lib/osc.js/src/osc"],
    osctransports: ["/scripts/lib/osc.js/src/osc-transports"],
    oscbrowser: ["/scripts/lib/osc.js/src/platforms/osc-browser"],



        EventEmitter:{
            导出:“ EventEmitter”
        },
        osctransports:{
            部门:[“ slip”,“ EventEmitter”]
        },
        振荡器浏览器:{
            导出:“ osc”,
            deps:[“ slip”,“ EventEmitter”,“ osc”,“ osctransports”]
        },

该错误返回到事件错误:


  未捕获的错误:模块名称“事件”尚未加载
  上下文:_。使用require([])


如果我将osc-transports.js中的行更改为

EventEmitter = EventEmitter || require("events").EventEmitter;




EventEmitter = EventEmitter || require("EventEmitter") || require("events").EventEmitter;


因为我认为先前的要求仅适用于EventEmitter的NPM版本,所以javascript错误消失了,库似乎可以正常工作。

有谁比我有更多使用RequireJS的经验,为什么我不能只使用该库的dist / ocs-browser版本?

最佳答案

我是osc.js的创建者。直到最近,osc.js才直接支持异步模块加载器。看到您的问题后,我为universal module definition样式样板库添加了支持,因此osc.js version 1.1.3及更高版本现在应该可以与Require.js一起使用。

10-06 12:21