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.3node 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文件)只需两个步骤:

  1. 将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')); 
  2. 访问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")); 

这一行使我能够从/assetpath前缀加载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)之上的任何目录中的静态文件。