gpt4 book ai didi

node.js - Node/Express - 静态服务不工作/如何将路由与静态服务文件一起使用

转载 作者:搜寻专家 更新时间:2023-10-31 22:48:07 25 4
gpt4 key购买 nike

我在路由和提供静态文件方面遇到了一些问题。

我的目录结构是这样的:

app/
--server.js
--controllers/
--directives/
--etc.
assets/
--img/
--css/
--etc.
views/
--partials/
--view1.jade
--view2.jade
--index.jade
--layout.jade
--etc.

我希望这样的事情发生:

  • app/- 服务静态文件(例如,“GET/app/controllers/controller.js”应该发送文字文件)
  • assets/- 提供静态文件(例如,“GET/assets/css/custom.css”应该发送文字文件)
  • views/- 动态路由(例如,“GET/partials/view1”使用我设置的路由规则)

这是我设置服务器的方式:

  ...
//PATHS:
var viewsPath = path.join(__dirname, '..', 'views');
var appPath = path.join(__dirname, '..', 'app');
var assetsPath = path.join(__dirname, '..', 'assets');
...
//SERVE-STATIC:
app.set('views', viewsPath);
app.use(serveStatic(appPath));
app.use(serveStatic(assetsPath));
...
//ROUTES:
// serve index and view partials
app.get('/', routes.index);

//Partials
app.get('/partials/:name', routes.partials);
...

但这是我访问索引时发生的情况:

[.../app]$ node app.server.js 
**Node Version: v0.12.2
**Express Version: 4.12.3
Path to views: /myproject/views
Static serving: /myproject/app
Static serving: /myproject/assets
Express server listening on port 3000
GET / 304 765.837 ms - -
GET /assets/css/app.css 404 9.851 ms - 31
GET /assets/css/bootstrap.min.css 404 1.837 ms - 41
GET /assets/css/bootstrap-theme.min.css 404 0.569 ms - 47
GET /assets/css/custom.css 404 0.787 ms - 34
GET /assets/libs/angular/angular.min.js 404 0.458 ms - 47
GET /app/app.modules.js 404 0.639 ms - 31
GET /app/services/services.js 404 0.560 ms - 37
GET /app/controllers/controllers.js 404 1.474 ms - 43
GET /app/filters/filters.js 404 0.662 ms - 35
GET /app/directives/directives.js 404 1.853 ms - 41
GET /assets/js/jquery.min.js 404 3.824 ms - 36
GET /assets/js/bootstrap.min.js 404 0.804 ms - 39
GET /assets/libs/angular/angular-bootstrap.min.js 404 0.624 ms - 57
GET /assets/libs/angular/angular-bootstrap-prettify.min.js 404 0.721 ms - 66
GET /assets/img/logo.png 404 0.465 ms - 39
GET /favicon.ico 404 1.216 ms - 24

views”部分有效,但“assets”和“app”部分不起作用

如何设置“serve-static”部分工作?我还需要路由吗——尽管它被列为提供静态文件?我还需要设置路由并执行“sendFile”吗?

谢谢!

/////////////////////////

更新:

/////////////////////////

我试过这个:

  ...
//PATHS:
var viewsPath = path.join(__dirname, '..', 'views');
var appPath = path.join(__dirname, '..', 'app');
var assetsPath = path.join(__dirname, '..', 'assets');
...
//SERVE-STATIC:
app.set('views', viewsPath);
app.use(serveStatic('app', appPath)); //<--- Changed
app.use(serveStatic('assets', assetsPath)); //<--- Changed
...
//ROUTES:
// serve index and view partials
app.get('/', routes.index);

//Partials
app.get('/partials/:name', routes.partials);
...

并且还将“app.modules.js”重命名为“app-modules.js”但也没有用:/仍然有很多 404:

GET / 200 645.235 ms - 1867
GET /assets/css/app.css 404 9.209 ms - 31
GET /assets/css/bootstrap.min.css 404 2.609 ms - 41
GET /assets/css/bootstrap-theme.min.css 404 1.297 ms - 47

最佳答案

要得到你想要的行为,改变这个:

app.use(serveStatic(appPath));

...为此:

  app.use('/app', serveStatic(appPath));

较早的代码指定静态提供 app 目录的内容,但它不包括路径的 app 部分。它基本上意味着“将 appPath 中的所有内容都视为 docroot”。因此,要在您的网络浏览器中获取(例如)app/server.js,您只需转到 http://example.com/server.js 和 < em>不是 http://example.com/app/server.js。通过在 app.use() 中指定路径,您可以获得所需的行为。

关于node.js - Node/Express - 静态服务不工作/如何将路由与静态服务文件一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30174165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com