【问题标题】:Including socket.io.js results in undefined 'require'包含 socket.io.js 会导致未定义的“要求”
【发布时间】:2011-12-16 21:27:58
【问题描述】:

我刚刚开始使用 node.js 和 socket.io。 我使用 windows 安装程序安装了 node.js,导致以下安装路径:

C:\Program Files (x86)\nodejs

我使用 npm 安装 socket.io 并设法将其包含在我的服务器文件中,该文件位于我的项目文件夹下

D:\projects\node\nodeserv.js

然后,我将 socket.io.js 包含在 nodjs 文件夹下,它位于同一个 socket.io 文件夹下。

但是,当我尝试打开包含客户端代码的 HTML 文件时,我在 socket.io.js 中收到错误声明:

Undefined reference to 'require'

谁能帮我看看我做错了什么?

【问题讨论】:

  • 等待...“未定义对‘必需’的引用”?您是否混淆了“必需”和“要求”? (前者在nodejs中不作为方法存在)
  • @TomTasche 你是对的,已编辑

标签: node.js socket.io


【解决方案1】:

请务必仔细检查您的拼写。如果您可以发布一些代码以查看,我们可能会立即告诉您问题。这很可能是一个简单的错字。

【讨论】:

  • 我在学习 NodeJS 时学到的第一件事就是“永远不要相信编译器错误。”
【解决方案2】:

听起来您正在尝试从浏览器运行 node.js。 Node.js 在带有节点可执行文件的服务器上运行。当您在浏览器中打开 HTML 文件时,它将在非 node.js 环境中对其执行 Javascript。

【讨论】:

  • 我知道,但我不应该能够从我的客户端代码中打开一个 io.Socket 吗?
  • 阅读socket.io documentation 并注意哪些代码剪辑器用于服务器,哪些用于客户端。
【解决方案3】:

显然你需要从nodejs服务器获取socket.io.js文件。

所以不要使用包含,而是使用异步调用来获取文件,例如:

$.getScript('http://localhost:1337/socket.io/socket.io.js', function(){
    //You can now use the io namespace
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2021-02-10
    • 2016-09-06
    相关资源
    最近更新 更多