因此,我是node的新手,正在尝试学习如何在node中使用express
库。然而,我试图弄清楚的问题是,为什么我的/public
文件夹中的文件似乎不能作为静态内容。
下面是我的代码:
var http = require('http');
var port = process.env.port || 1337;
var express = require('express');
var handlebars = require('express3-handlebars');
var path = require('path');
var application = express();
application.use(express.static(path.join(__dirname, 'public')));
application.engine('handlebars', handlebars({ defaultLayout: 'main' }));
application.get('/', function(req, res){
res.render('index.handlebars', { someProp: 3 });
});
application.listen(port);
和我的目录结构:
/
- server.js (the above referenced file)
/ Views
- index.handlebars
/ Layouts
- main.handlebars
/ public
- ServeMe.txt
我的理解是,application.use(express.static(path.join(__dirname, 'public')));
应该将服务器配置为在公共文件夹下使用该资源响应任何请求。我做错了什么?有趣的是,将handlebars配置为视图引擎要比让这个公共文件夹正常工作更容易
编辑:我尝试请求的完整网址:http://localhost:1337/public/serveme.txt
我尝试过区分大小写(这应该不是问题),但也不起作用。
发布于 2014-06-26 23:14:10
app.use(express.static(__dirname + '/public'));
这行服务于你的应用根URL中的公共文件夹,这意味着以下请求是有效的,不会给出404错误。
// GET /javascripts/jquery.js // GET /style.css // GET /favicon.ico
app.use也有一个可选的第一个参数,它允许您指定要在哪个请求URL上提供内容。第一个参数缺省为"/",这意味着您的静态内容将在基本URL上提供。如果您希望静态内容不是在根级别提供服务,就像您的代码目前所做的那样,请查看以下示例(同样取自文档)
app.use('/static', express.static(__dirname + '/public'));
这一行再次服务您的公共文件夹,但在您的应用程序的/static地址,使以下请求有效,而不是404错误。
(示例网址:http://localhost:1337/static/anythingInYourPublicFolder
)
// GET /static/javascripts/jquery.js // GET /static/style.css // GET /static/favicon.ico
https://stackoverflow.com/questions/24433733
复制相似问题