【发布时间】:2015-11-21 03:52:26
【问题描述】:
我是 Node.js 的新手。我尝试了一个 hello world Express/Node 应用程序,其中我在静态 css 文件中显示了一个小文本和一些静态图像以及一些样式。我正在使用我拥有的计算机上的 Vagrant 在托管虚拟机上运行我的应用程序。
我面临的问题是,当我从同一 LAN 中的另一台远程计算机尝试应用程序时,某些图像未显示。相应的 GET 请求以 200 状态码记录在 Node 中,但我的浏览器一直在等待答案。我试过 Firefox、Safari 和 Chrome。奇怪的是,如果我从托管虚拟机但在虚拟机外部的同一台计算机上调用相同的应用程序,那么我可以看到图像。
此外,如果我在 heroku 帐户上部署相同的应用程序时,我可以看到计算机中无法显示的所有图像。
所以我真的不明白哪里出了问题。
如果您之前遇到过类似的问题,请告诉我。
这里是代码
var express = require('express');
var logger = require('morgan');
var path = require('path');
var morgan = require('morgan');
var app = express();
var router = express.Router();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(router);
app.use(logger('dev'));
app.use(express.static(path.join(__dirname, 'public')));
router.all('/', function (req, res, next) {
console.log('Someone made a request!');
next();
});
router.get('/', function (req, res) {
res.render('index');
});
app.listen(3000);
module.exports = app;
这是简单的页面布局。两张图片在同一个文件夹中。
doctype html
html(lang="en")
head
title Express Routing
body
h1 Express Routing
p The Definitive Guide
img(src='/images/test.ico')
img(src='/images/giraffe.jpg')
这是我调用应用程序click here时的网络跟踪。
最终,我尝试使用现有公共 git 存储库中的另一个示例应用程序,并在我的虚拟机上部署它时遇到了同样的问题(并非所有静态文件都是从远程机器下载的,而如果我调用它们都会下载来自主机的应用程序).. 如您所见,有 3 个静态文件正在等待下载: click here。
供您参考,当我使用 Rails 而不是 Node 时,我没有这样的问题。
【问题讨论】:
标签: node.js http express vagrant