使用 TypeScript AMD 导入 OSC 库无法正确构建 osc 对象
Importing OSC library using TypeScript AMD fails to build osc object correctly
我正在尝试在此处使用 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 错误:
Uncaught Error: Module name "events" has not been loaded yet for
context: _. Use require([])
我已根据下面 Colin 的评论更新到最新的库,错误更改为引用单库。
Uncaught Error: Module name "slip" has not been loaded yet for
context: _. Use 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"],
和
事件发射器:{
导出:"EventEmitter"
},
osc传输:{
部门:["slip","EventEmitter"]
},
浏览器:{
导出:"osc",
部门:["slip"、"EventEmitter"、"osc"、"osctransports"]
},
事件错误 returns 错误:
Uncaught Error: Module name "events" has not been loaded yet for
context: _. Use require([])
如果我将 osc-transports.js 中的行从
更改为
EventEmitter = EventEmitter || require("events").EventEmitter;
到
EventEmitter = EventEmitter || require("EventEmitter") || require("events").EventEmitter;
因为我相信之前的 require 只适用于 EventEmitter 的 NPM 版本,所以 javascript 错误消失了,库似乎可以工作。
有没有比我有更多 RequireJS 经验的人知道为什么我不能只使用库的 dist/ocs-browser 版本?
我是 osc.js 的创造者。直到最近,osc.js 才直接支持异步模块加载器。看到你的问题后,我添加了对 universal module definition style boilerplate, so osc.js version 1.1.3 和更高版本的库的支持,现在应该可以与 Require.js 一起使用了。
我正在尝试在此处使用 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 错误:
Uncaught Error: Module name "events" has not been loaded yet for context: _. Use require([])
我已根据下面 Colin 的评论更新到最新的库,错误更改为引用单库。
Uncaught Error: Module name "slip" has not been loaded yet for context: _. Use 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"],
和 事件发射器:{ 导出:"EventEmitter" }, osc传输:{ 部门:["slip","EventEmitter"] }, 浏览器:{ 导出:"osc", 部门:["slip"、"EventEmitter"、"osc"、"osctransports"] },
事件错误 returns 错误:
Uncaught Error: Module name "events" has not been loaded yet for context: _. Use require([])
如果我将 osc-transports.js 中的行从
更改为EventEmitter = EventEmitter || require("events").EventEmitter;
到
EventEmitter = EventEmitter || require("EventEmitter") || require("events").EventEmitter;
因为我相信之前的 require 只适用于 EventEmitter 的 NPM 版本,所以 javascript 错误消失了,库似乎可以工作。
有没有比我有更多 RequireJS 经验的人知道为什么我不能只使用库的 dist/ocs-browser 版本?
我是 osc.js 的创造者。直到最近,osc.js 才直接支持异步模块加载器。看到你的问题后,我添加了对 universal module definition style boilerplate, so osc.js version 1.1.3 和更高版本的库的支持,现在应该可以与 Require.js 一起使用了。