简单的静态node.js服务器,无需加载外部文件

时间:2013-12-06 17:34:21

标签: node.js http-status-code-404

使用这个简单的静态node.js服务器 https://github.com/jesusabdullah/node-ecstatic

并创建了一个股票http服务器

var http = require('http');
var ecstatic = require('ecstatic');

http.createServer(
  ecstatic({ root: __dirname + '/index.html' })
).listen(8080);

console.log('Listening on :8080');

启动我的服务器后,index.html正确加载,但我的外部脚本或CSS都没有加载。只有404的

路径正确且相对于index.html。 'js'文件夹与我的index.html

位于同一目录中
<script src ="js/foo.js"></script

有谁能说明为什么会这样?

2 个答案:

答案 0 :(得分:2)

您可以在致电ecstatic时识别根目录,而不是您正在服务的单个文件。

因此,假设您的node.js文件与index.js位于同一目录中,则调用应如下所示:

http.createServer(
  ecstatic({ root: __dirname })
).listen(8080);

请注意,这也可以让人们下载你的node.js文件,这就是为什么人们通常会把他们的静态文件放在一个单独的目录中,比如public

答案 1 :(得分:0)

<script src ="js/foo.js"></script>更改为<script src ="/js/foo.js"></script>。这有用吗?

您的外部脚本或css放在哪里?

来自欣喜若狂的自述;

app.use(ecstatic({ root: __dirname + '/public' }));

这定义了静态服务器的根目录,您对__dirname + '/index.html'的root定义不正确,如果当前文件夹包含所有静态资产,则只使用app.use(ecstatic({ root: __dirname }));