2012-01-24 42 views
14

Tôi bắt đầu thử nghiệm với nodejs/expressjs/coffeescript và công cụ xem ngọc bích.Tại sao tôi không thể truy cập các tệp javascript của mình từ Expressjs/Nodej?

Tôi có thiết lập sau từ những gì tôi có thể thấy từ các ví dụ xung quanh có vẻ khá chuẩn.

app = express.createServer().listen process.env.PORT 

    app.configure -> 
     app.set 'views', __dirname + '/views' 
     app.set 'view engine', 'jade' 
     app.set 'view options', layout: true 
     app.use express.bodyParser() 
     app.use express.static(__dirname + '/public') 
     app.use app.router 


    app.get '/ekmHoliCal/index', (req, res) -> 
     res.render 'index' 

cấu trúc thư mục của tôi là như sau:

-- ekmHoliCal 
    -- public 
    --javascripts 
      client.js 
    -- views 
     index.jade 
     layout.jade 

Các tập tin index chứa gì, nhưng các dòng: Đây là file index

file layout.jade chứa:

!!! 5 
html(lang="en") 
    head 
     title Users 
     script(type="text/javascript", src="http://code.jquery.com/jquery-1.6.4.js") 
     script(type="text/javascript", src="/ekmholical/javascripts/client.js") 
    body 
     div!= body 

Khi tôi điều hướng đến localhost/ekmHoliCal/index, tôi nhận được trang chỉ mục như mong đợi. Tuy nhiên, nếu tôi xem nguồn tôi thấy liên kết tới jquery:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.js"> 

và nếu tôi nhấp vào liên kết đó đủ chắc chắn tôi sẽ thấy nguồn của tệp jquery.

Nguồn file index cũng chứa một liên kết đến tập tin client.js của tôi như sau:

<script type="text/javascript" src="/ekmholical/javascripts/simon.js"></script> 

nhưng khi tôi nhấp vào đó tôi nhận được

Không thể GET/ekmholical/Javascripts/khách hàng. js

tôi đã nhìn thấy câu hỏi có liên quan này (Express-js can't GET my static files, why?) và không thể nhìn thấy những gì tôi đang làm sai

Trả lời

22

Thẻ tập lệnh của bạn có đường dẫn sai. nó phải được

<script type="text/javascript" src="/javascripts/simon.js"></script> 

Trong nhanh, bạn đã thiết lập như sau:

app.use express.static(__dirname + '/public') 

Điều đó nói với hiện/nút đó vào thư mục public nên hành động như là người chủ web của bạn. Mọi thứ trong đó có thể được tham chiếu qua /, vì vậy nếu bạn cũng có thư mục CSS trong đó, bạn có thể sử dụng /css/styles.css

+0

Cảm ơn Paul. Tôi đã thử đề xuất của bạn mà không thành công. Điều đó nói rằng, câu trả lời của bạn là chính xác. Những gì tôi phủ nhận đề cập đến là tôi đang chạy này trên cửa sổ theo IIS và nó xuất hiện để được cấu hình của tôi của trang web dưới IIS đã gây ra vấn đề. –

1

Theo dõi những gì Paul Armstrong đã nói, bạn cũng có thể làm điều này.

app.use('/public', express.static(__dirname + '/public'); 

này sẽ cho phép bạn tham khảo tập tin js của bạn như thế này:

<script src="/public/javascripts/simon.js"></script> 
Các vấn đề liên quan