【问题标题】:now.js - Hello World example - "require not defined"now.js - Hello World 示例 - “要求未定义”
【发布时间】:2014-06-21 17:57:47
【问题描述】:

我无法让now.js chat client tutorial 工作。 (我也几乎完全关注了this video)。

server.coffee:

fs = require 'fs'
http = require 'http'
now = require 'now'

server = http.createServer (req, res) ->
    fs.readFile(
        'index.html'
        (err, data) ->
            res.writeHead(
                200
                    'Content-Type': 'text/html'
                )
            res.end(data)
        )
server.listen 8080

everyone = now.initialize(server)

everyone.now.distributeMessage = (msg) ->
    everyone.now.receiveMessage(@.now.name, msg)

index.html:

<html>
    <head>
        <title>nowjs title</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script type="text/javascript" src="https://raw.github.com/Flotype/now/master/lib/now.js"></script>

        <script type="text/javascript">
        $(document).ready(function() {
            now.name = prompt("What's your name?", "");
            now.receiveMessage = function(name, msg) {
              return $("<div></div>").text("" + name + ": " + msg).appendTo("#msg");
            };
            return $("#send-button").click(function() {
              now.distributeMessage($("#text-input").val());
              return $("#text-input").val("");
            });
          });
        </script>
    </head>

    <body>
        <div id="msg"></div>

        <input type="text" id="text-input">
        <input type="button" value="Send" id="send-button">
    </body>
</html>

当我用node server.js 加载服务器时,

我在 now.js 的第 1 行收到一条错误消息,提示“需要未定义”。因此,客户端代码无法找到变量“now”。

我知道 'require' 是一个节点函数,但我该如何让客户端理解呢?

任何帮助将不胜感激。

【问题讨论】:

  • 你安装 now.js 有依赖吗?
  • 是的。我用npm install now 安装了它。 Server.js 找到“现在”没有问题。
  • 我很困惑,您是在客户端还是服务器上收到错误"require not defined" on line 1 of now.js?此外,您应该将客户端的 now.js 文件从节点服务器中拉出,而不是远程资源 /NowJS/now.js
  • 我在客户端收到错误。服务器端很安静。我从哪里获取 node.js 有什么不同吗?
  • 等等,这是什么魔法?将 src 更改为 /nowjs/now.js 修复了它。服务器从哪里获取这个文件?

标签: node.js nowjs-sockets


【解决方案1】:

您在客户端源 (../Flotype/now/master/lib/now.js) 中包含的文件是调用 now = require 'now' 时包含在您的节点进程中的节点服务器端代码。

因此,将包含的客户端源文件从 .../Flotype/now/master/lib/now.js 更改为 /nowjs/now.js 将解决您的问题。

这个 /nowjs/now.js 文件来自哪里?

当使用 NowJS(以及许多其他进行客户端/服务器通信的 npm 包)时,您扩展了服务器对象。这是通过everyone = now.initialize(server) (Code Here) 行完成的。

initialize 函数所做的是 wrap your server 和 NowJS 中的 fileServer (Code Here) 类。这会添加一个 resource under the "folder" nowjs 服务于客户端 now.js 文件。

【讨论】:

    【解决方案2】:

    尝试使用 js 命令而不是 node 运行 nodejs 文件时出现此错误。 eg:如果nodejs文件名是test.js,我在做

    js test.js

    而不是 节点test.js

    我希望这对搜索此错误的人也有帮助。

    【讨论】:

      猜你喜欢
      • 2015-08-30
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      相关资源
      最近更新 更多