使用这个简单的静态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
有谁能说明为什么会这样?
答案 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 }));
。