【发布时间】:2015-07-21 00:14:49
【问题描述】:
我正在尝试在此处使用 OSC 库的浏览器部分:https://github.com/colinbdclark/osc.js 在我的 TypeScript AMD 网站中(使用 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 配置拉入所有组件时:
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"],
和 事件发射器:{ 导出:“事件发射器” }, osctransports:{ deps: ["slip", "EventEmitter"] }, 操作系统浏览器:{ 出口:“osc”, deps: ["slip","EventEmitter", "osc", "osctransports"] },
错误返回事件错误:
未捕获的错误:模块名称“事件”尚未加载 语境: _。使用 require([])
如果我将 osc-transports.js 中的行从
EventEmitter = EventEmitter || require("events").EventEmitter;
到
EventEmitter = EventEmitter || require("EventEmitter") || require("events").EventEmitter;
因为我相信之前的 require 仅适用于 EventEmitter 的 NPM 版本,所以 javascript 错误消失并且库似乎可以工作。
有没有比我更有 RequireJS 经验的人知道为什么我不能只使用库的 dist/ocs-browser 版本?
【问题讨论】:
-
@colin-clark 更新了库,现在唯一剩下的问题是 typescript 的模块导入代码的问题,因为它与此错误有关:github.com/Microsoft/TypeScript/issues/2192。作为一种变通方法,可以通过构造函数中的 require 语句来分配 osc。
标签: javascript requirejs typescript osc