gpt4 book ai didi

javascript - 使用 cachall 路由提供静态内容 - Express

转载 作者:太空宇宙 更新时间:2023-11-04 02:20:04 26 4
gpt4 key购买 nike

我正在使用 MEAN 堆栈制作一个项目,并希望使用 Express 提供我的文件。到目前为止,当我加载页面时,仅加载索引文件,但对于其他 2 个依赖项,我收到如下错误:

GET /assets/styles/css/application.css 404 9.470 ms - 151
Error: ENOENT: no such file or directory, stat '/home/shooshte/Webpages/Curriculum/assets/views/index.html'
at Error (native)

我尝试使用express.static方法提供我的文件,但它似乎不起作用。我还想要一个 cachall 路由,它总是提供我的 index.html 文件(构建一个 Angular 应用程序,因此 Angular 将处理来自索引的路由)。

我的 server.js 文件:

// packages
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var morgan = require('morgan');
var path = require('path');

//app configuration
var port = process.env.PORT || 8080;

// body parser
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
//CORS requests
app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, content-type, Authorization');
next();
});

//log all requests to console
app.use(morgan('dev'));

app.use(express.static(__dirname +'/assets'));

//catchall route
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname + '/assets/views/index.html'));
});

//start the server
app.listen(port);
console.log('Running on: ' + port);

index.html

<!doctype HTML>
<head>
<meta charset="utf-8">
<title>Miha Šušteršič</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="assets/styles/css/application.css">
</head>
<body>
<script src="../../bower_components/angular/angular.min.js"></script>
</body>

我的文件结构如下所示:

assets
--scripts
--styles
----css
------application.css
----sass
--views
--index.html
bower_components
node_modules
.gitingnore
bower.json
gulpfile.js
package.json
readme.md
server.js

最佳答案

当您指定app.use(express.static(__dirname +'/assets'));时在您的express配置中,这意味着express服务器将在assets目录中查找静态文件。现在,在您的 .html 文件中,您应该提及不带 assets 目录的静态文件路径。

所以替换 <link rel="stylesheet" href="assets/styles/css/application.css"><link rel="stylesheet" href="styles/css/application.css">应该成功获取 application.css。

关于javascript - 使用 cachall 路由提供静态内容 - Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33945335/

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