Node.js socket.io 1.0.x与require.js不兼容?
每当我尝试在require.js之后加载socket.io 1.0.x时,它都会生成 未捕获引用错误:未定义ioNode.js socket.io 1.0.x与require.js不兼容?,node.js,socket.io,requirejs,Node.js,Socket.io,Requirejs,每当我尝试在require.js之后加载socket.io 1.0.x时,它都会生成 未捕获引用错误:未定义io RequireJS创建一组require和define方法。。。iojs文件看到了这一点,并定义了自己 首先包括socket.io或使用AMD我特别想要bower软件包(),并通过RequireJS进行合作。起初,ng套接字出错,因为未定义io,即使使用带垫片的DEP 因此,我添加了一个startSocketIo.js文件: define([ 'socket.io-client'
RequireJS创建一组
require
和define
方法。。。iojs文件看到了这一点,并定义了自己
首先包括socket.io或使用AMD我特别想要bower软件包(),并通过RequireJS进行合作。起初,ng套接字出错,因为未定义
io
,即使使用带垫片的DEP
因此,我添加了一个startSocketIo.js
文件:
define([
'socket.io-client'],function(io) {
window.io = io;
});
并将deps节添加到我的require config文件的根目录中:
deps: [
'./startSocketIo'
],
我认为这类似于通过脚本标签添加,对性能没有任何改善,但它允许我继续使用未修改的bower软件包,并对我的所有js使用requirejs。Socket.io 0.x
对于socket.io 0.x,您需要在中导出require.js配置中的io:
shim: {
'socket.io-client': {
exports: 'io'
}
}
和您的js文件:
define(['socket.io-client'], function () {
// io is exported here
var socket = io.connect ...
}
define(['socket.io-client'], function (io) {
// io an argument of the function
var socket = io.connect ...
}
Socket.io 1.x
对于socket.io 1.x,无需在require.js配置文件中导出io
和您的js文件:
define(['socket.io-client'], function () {
// io is exported here
var socket = io.connect ...
}
define(['socket.io-client'], function (io) {
// io an argument of the function
var socket = io.connect ...
}
但在这两种情况下,都必须在define中使用io对象,以便在需要时由require.js正确加载。
还请注意,您需要在浏览器中使用socket.io客户端,而不是socket.io
define(['socket.io-client'], function (io) {
// io an argument of the function
var socket = io.connect ...
}