3

我无法让now.js 聊天客户端教程正常工作。(我也几乎完全按照这个视频)。

服务器.咖啡:

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)

索引.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 行收到一条错误消息,上面写着“需要未定义”。因此,客户端代码找不到变量“现在”。

我知道'require'是一个节点功能,但我如何让客户理解这一点?

任何帮助将不胜感激。

4

2 回答 2

2

您包含在客户端源代码 ( ../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)代码在这里)完成的。

初始化函数的作用是用NowJS 中的( Code Here ) 类包装您的服务器。这会在为客户端now.js文件提供服务的“文件夹”nowjs 下添加一个资源。fileServer

于 2012-08-03T16:35:39.330 回答
0

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

js test.js

而不是节点 test.js

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

于 2014-06-21T09:57:47.587 回答