2016-11-14 109 views
1

我正在使用node.js,我希望我的HTML文件能够获取JavaScript文件。Node.js HTML页面错误404获取javascript时

这是我和node.js的所谓server.js运行文件:

var app = require('express')(); 
var http = require('http').Server(app); 

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

提出主办index.html非常简单的代码。这个HTML文件中有一些脚本标签:

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

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

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

而问题是,当我运行server.js,我去到浏览器我得到的控制台上的错误:

GET http://localhost:3000/A.js 
GET http://localhost:3000/B.js 
GET http://localhost:3000/C.js 404 (Not Found) 

404 error not found

这些文件都在同一个目录下,我不明白为什么它没有得到脚本。

回答

0

server.js不知道如何处理,除了根页面请求任何东西。当你打算

var express = require('express'); 
var app = express(); 
var http = require('http').Server(app); 

express.static('public') 

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

现在在public文件夹中的所有文件将送达:(即使是http://localhost:3000/index.html将失败,404)

添加express.static middleware从目录提供文件服务。 (将您的* .js文件移动到名为public的子文件夹中)

请参阅HyperDev default project template以获得一个良好的交互式示例。

+1

是的谢谢:)代码中缺少的唯一东西把声明一个var express = require('express')然后app = express() –

+0

@NunoMiguelSilva:啊..修正它〜 – Leftium

0

尝试寻找在Express1文档提供静态文件。

你跟这些行服务您的索引文件:

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 

可以成为JS文件以同样的方式或者让他们在一个文件夹public并添加app.use(express.static('public'))

然后,你可以参考它们作为public/A.js

+0

在服务器上,文件将是'public/A.js',但它应该在HTML中被引用,只是'./ A.js' – Leftium