首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带有默认前缀的nodejs提供静态html文件

使用带有默认前缀的nodejs提供静态html文件
EN

Stack Overflow用户
提问于 2016-02-29 18:58:13
回答 1查看 980关注 0票数 2

我正在使用Restify服务我的静态网页。html文件调用服务器获取脚本和css文件。

我正在创建的服务器需要所有端点都以/ server /终结点为前缀

我已经能够服务器index.html文件,但是当浏览器试图包含脚本和css文件时,我得到一个404状态代码。

当我转到localhost:1337/ correctly /终结点时,我得到了正确呈现的index.html。但是,当浏览器试图下载其他文件时,它会将index.html中的路径前缀为localhost:1337/safe,而不是localhost:1337/safe/终结点。

示例:

此路径为index.html提供服务。

代码语言:javascript
复制
localhost:1337/safe/endpoint

在index.html文件中,我有以下内容

代码语言:javascript
复制
<script src="app/js/thing.js"></script>

当浏览器尝试获取thing.js时,请使用此路径

代码语言:javascript
复制
localhost:1337/safe/app/js/thing.js

而不是

代码语言:javascript
复制
localhost:1337/safe/endpoint/app/js/thing.js

服务器代码如下所示

代码语言:javascript
复制
server.get("/safe/endpoint", function(req, res){
  fs.readFile("./frontend/index.html", "utf8", function(err, data){
    if(err){
      res.setHeader('content-type', 'text/plain');
      res.send(404, "No index.html found");
    } else {
      res.setHeader('Content-Type', 'text/html');
      res.writeHead(200);
      res.end(data);
    }
  });
});

server.get("/safe/endpoint/app/.*", function(req, res){
  var filePath = "./frontend" + req.url.split("/safe/endpoint")[1];

  fs.readFile(filePath, "utf8", function(err, data){
    if(err){
      res.setHeader('content-type', 'text/plain');
      res.send(404, req.url + " not found");
    } else {
      res.setHeader('Content-Type', 'text/html');
      res.writeHead(200);
      res.end(data);
    }
  });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-28 10:04:01

我能够使用restify模块中包含的serveStatic来完成这个任务。

代码语言:javascript
复制
server.get("/safe/endpoint/.*", restify.serveStatic({
  directory: "./UI",
  default: "index.html"
}));

但是,我需要在UI文件夹中的文件夹路径前缀:

代码语言:javascript
复制
/UI/safe/endpoint/index.html

但这也有一个缺点。当请求服务器时,路径必须是

代码语言:javascript
复制
example.com/safe/endpoint/

而不是

代码语言:javascript
复制
example.com/safe/endpoint
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35707376

复制
相关文章

相似问题

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