Nodejs 在 require('socket.io') 上抛出错误
Nodejs throws error on require('socket.io')
我在 windows x64
上安装了 nodejs
要求('socket.io').listen(8080);或者只需要('socket.io');我得到这个错误:
C:\node>node applications/app.js
C:\node\node_modules\engine.io-client\lib\transports\polling.js:23
var xhr = new XMLHttpRequest({ xdomain: false });
^
TypeError: object is not a function
at C:\node\node_modules\engine.io-client\lib\transports\polling.js:23:13
at Object.<anonymous> (C:\node\node_modules\engine.io-client\lib\transports\
polling.js:25:3)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (C:\node\node_modules\engine.io-client\lib\transports\
polling-xhr.js:6:15)
at Module._compile (module.js:460:26)
您似乎以某种方式包含了错误的 socket.io
库。 XMLHttpRequest
是一个浏览器对象,只能在浏览器中使用。如果您在 node.js 中使用 socket.io,您可能需要库的服务器端版本,它不会尝试使用 XMLHttpRequest
.
而且,当您查看路径名称时,您似乎以某种方式绘制了 engine.io-client
,这不是您想要的。
这是您想要的服务器端模块:https://www.npmjs.com/package/socket.io
如果碰巧你有正确的模块,但你正在为浏览器的客户端模块做 require()
,那么这也可能导致你看到的问题,因为那将是一个错误,应该被删除。
我在 windows x64
上安装了 nodejs要求('socket.io').listen(8080);或者只需要('socket.io');我得到这个错误:
C:\node>node applications/app.js
C:\node\node_modules\engine.io-client\lib\transports\polling.js:23
var xhr = new XMLHttpRequest({ xdomain: false });
^
TypeError: object is not a function
at C:\node\node_modules\engine.io-client\lib\transports\polling.js:23:13
at Object.<anonymous> (C:\node\node_modules\engine.io-client\lib\transports\
polling.js:25:3)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (C:\node\node_modules\engine.io-client\lib\transports\
polling-xhr.js:6:15)
at Module._compile (module.js:460:26)
您似乎以某种方式包含了错误的 socket.io
库。 XMLHttpRequest
是一个浏览器对象,只能在浏览器中使用。如果您在 node.js 中使用 socket.io,您可能需要库的服务器端版本,它不会尝试使用 XMLHttpRequest
.
而且,当您查看路径名称时,您似乎以某种方式绘制了 engine.io-client
,这不是您想要的。
这是您想要的服务器端模块:https://www.npmjs.com/package/socket.io
如果碰巧你有正确的模块,但你正在为浏览器的客户端模块做 require()
,那么这也可能导致你看到的问题,因为那将是一个错误,应该被删除。