CoffeScript: не распознается при запуске из браузера - PullRequest
7 голосов
/ 21 ноября 2011

Я пытаюсь запустить этот фрагмент кода, взятый из 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-файли открыть его, я получаю эту ошибку: Uncaught 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 ]

5 голосов
/ 21 ноября 2011

Это не сработает в браузере.

Первая проблема: в браузере не разрешено подключаться к другим серверам или портам, чем это происходит из соображений безопасности.Кроме того, вы не получаете настоящие сокеты, только HTTP.

Вторая проблема: require - это команда node.js, которую вы сможете использовать только в node.js (то есть когда вы запускаетефайл javascript с помощью команды node или файл coffeescript с помощью команды coffee).Модуль net принадлежит к node.js и никогда не будет работать таким образом в браузере.

Если вы хотите общаться с сервером в реальном времени изнутри браузера, я рекомендую socket.io модуль, который использует веб-сокеты, flashsockets и HTTP (которые можно использовать из браузера).

2 голосов
/ 21 ноября 2011

Вы можете использовать require в браузере с такими обертками, как node-browserify .Тем не менее, все проблемы, указанные @thejh, верны, поэтому вам придется пересмотреть свой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...