首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >学习节点- Express公用文件夹不工作

学习节点- Express公用文件夹不工作
EN

Stack Overflow用户
提问于 2014-06-26 22:53:15
回答 1查看 58.7K关注 0票数 25

因此,我是node的新手,正在尝试学习如何在node中使用express库。然而,我试图弄清楚的问题是,为什么我的/public文件夹中的文件似乎不能作为静态内容。

下面是我的代码:

代码语言:javascript
复制
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);

和我的目录结构:

代码语言:javascript
复制
/
  - 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

我尝试过区分大小写(这应该不是问题),但也不起作用。

EN

回答 1

Stack Overflow用户

发布于 2014-06-26 23:14:10

Express API reference

代码语言:javascript
复制
app.use(express.static(__dirname + '/public'));

这行服务于你的应用根URL中的公共文件夹,这意味着以下请求是有效的,不会给出404错误。

// GET /javascripts/jquery.js // GET /style.css // GET /favicon.ico

app.use也有一个可选的第一个参数,它允许您指定要在哪个请求URL上提供内容。第一个参数缺省为"/",这意味着您的静态内容将在基本URL上提供。如果您希望静态内容不是在根级别提供服务,就像您的代码目前所做的那样,请查看以下示例(同样取自文档)

代码语言:javascript
复制
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

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24433733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档