CoffeeScript:从浏览器运行时无法识别

时间:2011-11-21 17:15:00

标签: coffeescript

我正在尝试运行从http://coffeescriptcookbook.com中获取的代码,将其嵌入到html中。

net = require 'net'

domain = 'localhost'
port = 9001

connecting = (socket) ->
    console.log "Connecting to real-time server"

connection = net.createConnection port, domain

connection.on 'connect', () ->
    console.log "Opened connection to #{domain}:#{port}"
    connecting connection

connection.on 'data', (data) ->
    console.log "Received: #{data}"

connection.on 'end', (data) ->
    console.log "Connection closed"

此代码位于名为client.coffe的文件中,当我使用coffee命令运行时:coffee client.coffe它运行正常并连接到服务器,但是当我将其嵌入到html文件中并打开它时,我得到了这个错误:未捕获的ReferenceError:未定义require。

我的html脚本标记如下所示:

 <script src="http://jashkenas.github.com/coffee-script/extras/coffee-script.js"
         type="text/javascript" charset="utf-8" ></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"
         type="text/javascript" charset="utf-8"></script>
    <script src="{% get_static_prefix %}functions.js"
         type="text/javascript" charset="utf-8"></script>
    <script src="{% get_static_prefix %}jquery.dajax.core.js"
         type="text/javascript" charset="utf-8"></script>

    <script src="{% get_static_prefix %}client.coffee"
         type="text/coffeescript" charset="utf-8"></script>

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

这不适用于浏览器。

第一个问题:出于安全原因,浏览器中的东西不允许连接到其他服务器或端口。此外,你没有真正的套接字,只有HTTP。

第二个问题:require是一个node.js命令,你只能在node.js中使用(也就是说,当你使用node命令或coffeescript运行javascript文件时使用coffee命令的文件)。 net模块属于node.js,并且永远不会在浏览器中以这种方式工作。

如果您想从浏览器内部实时与服务器通信,我建议socket.io模块使用websockets,flashsockets和HTTP(可在浏览器中使用)。

答案 1 :(得分:2)

您可以在包含node-browserify等包装的浏览器中使用require。但是,@ thejh指出的所有问题都是正确的,所以你必须重新考虑你的代码。