【问题标题】:Node JS: net.Socket is not a constructorNode JS:net.Socket 不是构造函数
【发布时间】:2022-02-19 18:05:33
【问题描述】:

如果我从命令行运行以下代码,它可以正常工作,但如果我在项目中的任何位置运行此代码,我会收到此错误:

net.Socket is not a constructor

我尝试将以下代码作为对象并将其导入/需要它到我的项目中,但我仍然收到该错误。

var net = require('net');

var client = new net.Socket();
    client.connect(3000, '127.0.0.1', function() {
    console.log('Connected');
    client.write('Hello, server! Love, Client.');
});

我是否想了解 require 的作用,我还尝试使用 importimport * as 来获取“网络”。

我不太确定在这种情况下哪些信息有用。任何建议都会很棒。

【问题讨论】:

  • 您是通过节点还是浏览器运行此代码?如果来自节点,什么版本的节点(node -v)?
  • 如果我通过节点运行它工作正常,例如节点 test.js(它有效),如果我通过浏览器运行它,我会得到 net.createConnection is not a constructornet.Socket is not a constructor。节点版本 4.4.5

标签: node.js


【解决方案1】:

浏览器中没有普通的 TCP 套接字,这就是为什么尝试在浏览器中使用 net.Socket(通过 webpack、browserify 等)不起作用的原因。

可能存在某种“polyfill”,它需要服务器代表浏览器建立 TCP 连接(或者可能通过一些连接到 Flash 或 Java 小程序的桥接)。

【讨论】:

  • 谢谢,我会考虑实施 polyfill 以使其正常工作。
  • @AdamEdney :嗨亚当,我遇到了同样的问题,这里有任何更新
  • @Krishna 我决定使用 websocket。即npmjs.com/package/websocket。希望这会有所帮助!
  • @AdamEdney :您是否能够使用 websocket 连接到任何 TCP 服务器,或者它只能与 websocket 服务器一起使用。
  • @javadeveloper 老实说我不是专家,我只用具有 web socket 服务器的服务器对其进行了测试。
【解决方案2】:

使用节点 16 版本。 这些功能目前在 Node.js v16.9.1 下 https://nodejs.org/dist/latest-v16.x/docs/api/net.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 2021-01-11
    • 2015-12-04
    • 2018-11-29
    • 2016-12-04
    相关资源
    最近更新 更多