2011-11-21 24 views
6

Tôi đang cố gắng chạy đoạn mã này được lấy từ http://coffeescriptcookbook.com nhúng mã vào html.CoffeScript: không được nhận dạng khi runninjg từ trình duyệt

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" 

Mã này được trong file có tên client.coffe và khi tôi chạy nó với lệnh cà phê: cà phê client.coffe nó chạy tốt và kết nối đến máy chủ, nhưng khi tôi embbed nó trong một file html và cởi mở nó tôi nhận được lỗi này: Uncaught ReferenceError: yêu cầu không được xác định.

thẻ script html của tôi trông như thế này:

<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> 

Bất kỳ ý tưởng?

Trả lời

5

Điều này sẽ không hoạt động trong trình duyệt.

Vấn đề đầu tiên: Nội dung trong trình duyệt không được phép kết nối với các máy chủ hoặc cổng khác mà nó đến từ vì lý do bảo mật. Ngoài ra, bạn không nhận được ổ cắm thực sự, chỉ cần HTTP.

Vấn đề thứ hai: require là lệnh node.js bạn chỉ có thể sử dụng trong node.js (nghĩa là khi bạn chạy tệp javascript có lệnh node hoặc tệp coffeescript bằng lệnh coffee). Mô-đun net thuộc về node.js và sẽ không bao giờ hoạt động theo cách này trong trình duyệt.

Nếu bạn muốn nói chuyện với máy chủ trong thời gian thực từ bên trong trình duyệt, tôi khuyên bạn nên sử dụng mô-đun socket.io sử dụng các ổ cắm web, đèn flash và HTTP (có thể sử dụng được trong trình duyệt).

+0

Cảm ơn hoặc câu trả lời nhanh, tôi không biết gì về cả hai vấn đề kể từ khi tôi mới sử dụng javascript. Tôi sẽ cố gắng sử dụng Connect cho máy chủ và ổ cắm io. Cảm ơn bạn rất nhiều –

2

Bạn có thể sử dụng require trong trình duyệt có trình bao bọc như node-browserify. Tuy nhiên, tất cả các vấn đề được chỉ ra bởi @thejh đều chính xác, vì vậy bạn sẽ phải suy nghĩ lại mã của mình.

+0

Vâng, có vẻ như cách tiếp cận của tôi đã hoàn toàn sai. Ngay bây giờ tôi đang xem cuốn sách có tên là "CoffeeScript: boosted javascript developmnt" trong đó có một ví dụ điển hình về cách sử dụng io sockts trong một trình duyệt web. Cảm ơn câu trả lời của bạn. –

Các vấn đề liên quan