我想将服务index.html
和/media
子目录作为静态文件.索引文件应该在/index.html
和/
URL处提供.
我有
web_server.use("/media", express.static(__dirname + '/media'));
web_server.use("/", express.static(__dirname));
Run Code Online (Sandbox Code Playgroud)
但第二行显然服务于整个__dirname
,包括其中的所有文件(不只是index.html
和media
),我不想要.
我也试过了
web_server.use("/", express.static(__dirname + '/index.html'));
Run Code Online (Sandbox Code Playgroud)
但访问基本URL /
然后导致对web_server/index.html/index.html
(双index.html
组件)的请求,当然这会失败.
有任何想法吗?
顺便说一句,我可以在Express中找到关于这个主题的绝对文档(static()
+它的参数)......令人沮丧.文档链接也是受欢迎的.
250*_*50R 179
如果你有这个设置
/app
/public/index.html
/media
Run Code Online (Sandbox Code Playgroud)
那么这应该得到你想要的
var express = require('express');
//var server = express.createServer();
// express.createServer() is deprecated.
var server = express(); // better instead
server.configure(function(){
server.use('/media', express.static(__dirname + '/media'));
server.use(express.static(__dirname + '/public'));
});
server.listen(3000);
Run Code Online (Sandbox Code Playgroud)
诀窍是将这一行留作最后一个后备
server.use(express.static(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)
至于文档,由于Express使用连接中间件,我发现直接查看连接源代码更容易.
例如,此行显示支持index.html https://github.com/senchalabs/connect/blob/2.3.3/lib/middleware/static.js#L140
Chr*_*ell 125
在最新版本的express中,不推荐使用"createServer".这个例子对我有用:
var express = require('express');
var app = express();
var path = require('path');
//app.use(express.static(__dirname)); // Current directory is root
app.use(express.static(path.join(__dirname, 'public'))); // "public" off of current is root
app.listen(80);
console.log('Listening on port 80');
Run Code Online (Sandbox Code Playgroud)
小智 90
express.static()
期望第一个参数是目录的路径,而不是文件名.我建议创建另一个子目录来包含你的index.html
并使用它.
在Express 文档中提供静态文件,或更详细的serve-static
文档,包括服务的默认行为index.html
:
默认情况下,此模块将发送"index.html"文件以响应目录上的请求.要禁用此设置false或提供新索引,请按首选顺序传递字符串或数组.
xam*_*mir 37
res.sendFile
&express.static
都将此项工作
var express = require('express');
var app = express();
var path = require('path');
var public = path.join(__dirname, 'public');
// viewed at http://localhost:8080
app.get('/', function(req, res) {
res.sendFile(path.join(public, 'index.html'));
});
app.use('/', express.static(public));
app.listen(8080);
Run Code Online (Sandbox Code Playgroud)
public
客户端代码所在的文件夹在哪里
作为建议通过@ATOzTOA和由澄清 @Vozzie,path.join
采取的路径加入作为参数时,+
通过一个单一的参数路径.
如果您有复杂的文件夹结构,例如
- application
- assets
- images
- profile.jpg
- web
- server
- index.js
Run Code Online (Sandbox Code Playgroud)
如果您想assets/images
从index.js
app.use('/images', express.static(path.join(__dirname, '..', 'assets', 'images')))
Run Code Online (Sandbox Code Playgroud)
从浏览器查看
http://localhost:4000/images/profile.jpg
Run Code Online (Sandbox Code Playgroud)
如果您需要更多澄清评论,我会详细说明。
const path = require('path');
const express = require('express');
const app = new express();
app.use(express.static('/media'));
app.get('/', (req, res) => {
res.sendFile(path.resolve(__dirname, 'media/page/', 'index.html'));
});
app.listen(4000, () => {
console.log('App listening on port 4000')
})
Run Code Online (Sandbox Code Playgroud)
小智 5
在你的 app.js 中使用下面的内容
app.use(express.static('folderName'));
Run Code Online (Sandbox Code Playgroud)
(folderName 是包含文件的文件夹) - 请记住这些资产是通过服务器路径直接访问的(即http://localhost:3000/abc.png (其中 abc.png 位于folderName 文件夹内)
归档时间: |
|
查看次数: |
302638 次 |
最近记录: |