Express无法找到静态文件

时间:2015-02-15 11:06:12

标签: node.js sockets express

使用express和套接字创建聊天客户端。但是,当我尝试连接到静态文件时,我得到了404。

Server.js

var jade = require('jade');

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
io.on('connection', function() {
    'use strict';
    socket.on('setPseudo', function(data) {
        socket.set('pseudo', data);
    });
    socket.on('message', function(message) {
        socket.get('pseudo', function(error, name) {
            var data = {
                'message': message,
                pseudo: name
            };
            socket.broadcast.emit('message', data);
            console.log("user " + name + " send this : " + message);
        });
    });
});
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set("view options", {
    layout: false
});
app.use(express.static(__dirname + '/public'));

app.get('/', function(req, res) {
    'use strict';
    res.render('home.jade');
});
server.listen(4000);

为了使我的应用程序正常工作,我需要连接到my / public文件夹中的script.js文件。但是服务器似乎无法找到它。

使用jade文件更新:

doctype html
html
    head
        title le Chat
        script(src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js')
        script(src="/socket.io/socket.io.js")
        script(src="public/script.js")
body
    div.container
        header
            h1 le Chat Meow
        input(type='text')#pseudoInput
        button#pseudoSet Set Pseudo
        div#chatEntries
        div#chatControls
            input(type='text')#messageInput
            button#submit Send

以及文件夹结构:

-public > script.js
-views > home.jade
-server.js

2 个答案:

答案 0 :(得分:0)

script(src="public/script.js")更改为script(src="script.js"),因为您的公用文件夹是静态文件的根目录,因此您无需将其放在html文件的路径中

答案 1 :(得分:0)

因为有人将你的另一个关于console.readLine的最新问题标记为一个dublicate事件,但显然我不会在这里回答它。

显然,console.readLine在IDE中不起作用,例如eclipse。 您必须在实际控制台中运行该程序才能使该代码生效。 建议使用缓冲的阅读器