Express-js无法获取我的静态文件,为什么?
我已经将我的代码简化为我可以创build的最简单的express-js应用程序:
var express = require("express"), app = express.createServer(); app.use(express.static(__dirname + '/styles')); app.listen(3001);
我的目录看起来像这样:
static_file.js /styles default.css
然而当我访问http://localhost:3001/styles/default.css
,出现以下错误:
Cannot GET / styles / default.css
我使用express 2.3.3
和node 0.4.7
。 我究竟做错了什么?
尝试http://localhost:3001/default.css
。
要在请求url中包含/styles
,请使用:
app.use("/styles", express.static(__dirname + '/styles'));
看看这个页面上的例子:
//Serve static content for the app from the "public" directory in the application directory. // GET /style.css etc app.use(express.static(__dirname + '/public')); // Mount the middleware at "/static" to serve static content only when their request path is prefixed with "/static". // GET /static/style.css etc. app.use('/static', express.static(__dirname + '/public'));
我有同样的问题。 我用下面的代码解决了这个问题:
app.use('/img',express.static(path.join(__dirname, 'public/images'))); app.use('/js',express.static(path.join(__dirname, 'public/javascripts'))); app.use('/css',express.static(path.join(__dirname, 'public/stylesheets')));
静态请求示例:
http://pruebaexpress.lite.c9.io/js/socket.io.js
我需要一个更简单的解决scheme。 它存在吗?
default.css
应该在http://localhost:3001/default.css
可用
app.use(express.static(__dirname + '/styles'));
的styles
app.use(express.static(__dirname + '/styles'));
只是告诉express在styles
目录中查找一个静态文件来服务。 它不(混淆)然后形成它可用的path的一部分。
在你的server.js中:
var express = require("express"); var app = express(); app.use(express.static(__dirname + '/public'));
您已经分别申报快递和应用程序,创build一个名为“公共”的文件夹或只要你喜欢,但你可以访问这些文件夹。 在你的模板src中,你已经把相对path从/ public(或你的文件夹命名的名字到静态文件)。 注意路线上的酒吧。
提供静态文件(CSS,图像,JS文件)只需两个步骤:
-
将css文件的目录传递到内置的中间件express.static中
var express = require('express'); var app = express(); /*public is folder in my project directory contains three folders css,image,js */ //css =>folder contains css file //image=>folder contains images //js =>folder contains javascript files app.use(express.static( 'public/css'));
-
访问css文件或图像只需inputurl http:// localhost:port / filename.css例如: http:// localhost:8081 / bootstrap.css
注意:只要input<link href="file_name.css" rel="stylesheet">
即可将css文件链接到html
如果我写这个代码
var express = require('express'); var app = express(); app.use('/css',express.static( 'public/css'));
访问静态文件只需inputurl:localhost:port / css / filename.css例如: http:// localhost:8081 / css / bootstrap.css
注意用html链接css文件只需添加下面一行
<link href="css/file_name.css" rel="stylesheet">
这为我工作:
app.use('*/css',express.static('public/css')); app.use('*/js',express.static('public/js')); app.use('*/images',express.static('public/images'));
我发现我的CSS文件,并添加到它的路线:
app.get('/css/MyCSS.css', function(req, res){ res.sendFile(__dirname + '/public/css/MyCSS.css'); });
那么它似乎工作。
尝试使用http:// localhost:3001 / default.css访问它。
app.use(express.static(__dirname + '/styles'));
你实际上给它的文件夹的名称,即风格不是你的郊区。
对我有效的是:
(而不是写app.use(express.static(__dirname + 'public/images'));
在你的app.js
简单地写app.use(express.static('public/images'));
即删除path中的根目录名称。 然后你可以在其他js文件中有效地使用静态path,例如:
<img src="http://img.dovov.commisc/background.jpg">
希望这可以帮助 :)
我在我的应用程序中使用Bootstrap CSS,JS和字体。 我在应用程序的根目录中创build了一个名为asset
的文件夹,并将所有这些文件夹放在里面。 然后在服务器文件中添加以下行:
app.use("/asset",express.static("asset"));
这一行使我能够从/asset
path前缀加载asset
目录中的文件,例如: http://localhost:3000/asset/css/bootstrap.min.css
。
现在在视图中,我可以简单地包含CSS和JS,如下所示:
<link href="/asset/css/bootstrap.min.css" rel="stylesheet">
这个为我工作
app.use(express.static(path.join(__dirname, 'public'))); app.use('/img',express.static(path.join(__dirname, 'public/images'))); app.use('/shopping-cart/javascripts',express.static(path.join(__dirname, 'public/javascripts'))); app.use('/shopping-cart/stylesheets',express.static(path.join(__dirname, 'public/stylesheets'))); app.use('/user/stylesheets',express.static(path.join(__dirname, 'public/stylesheets'))); app.use('/user/javascripts',express.static(path.join(__dirname, 'public/javascripts')));
除了上面的内容,还要确保静态文件path以/(ex … / assets / css)开头…来提供主目录(/ main)之上的任何目录中的静态文件。