javascript - Express.js 中的静态路由返回 404 错误
问题描述
我正在尝试使用 express.js 为我网站的不同页面创建路由。转到 127.0.0.1:8080 时,它可以正常加载 index.html 页面,但是,当我转到 127.0.0.1:8080/questionaire 时,它返回 404 错误并且不加载 questionaire.html。我认为使用这条线:
app.use(express.static('client', { extensions: ['html'] }));
意味着这是可能的,但是,它不起作用。如果有更好的方法来解决这个问题,请告诉我。
目录
client
-- index.html
-- index.js
-- questionaire.html
-- questionaire.js
svr.js
viewapi.js
svr.js
'use strict';
const express = require('express');
const app = express();
const view_api = require('./viewapi');
app.use(express.static('client', { extensions: ['html'] }));
const api = require('./api');
app.use('/view', view_api); // routing to api which will get data in form of JSON
app.listen(8080);
解决方案
我刚刚尝试了您的设置并加载 questionare.html 对我来说效果很好。当您尝试加载页面时,您是否从 Express 服务器收到任何其他错误?我问是因为我不确定里面的内容是什么,viewapi.js
所以当我测试它时,我没有那个文件。
但是,要回答这个问题:
如果有更好的方法来解决这个问题,请告诉我。
分离您提供的资产(html、css、js、图像等)是一种很好的做法。例如,您可以在文件夹中创建子文件client
夹并将静态文件放在适当的文件夹中。
您还可以在此处找到示例和更好的文档:https ://expressjs.com/en/starter/static-files.html
推荐阅读
- javascript - 如何在 IE 中通过 src 属性隐藏图像?
- java - 带有 Spring Boot 413 请求实体的 Apache Camel 太大
- spring-data-jpa - Swagger - system.js:461 RangeError: 超出最大调用堆栈大小 - 使用 @ManyToMany 关系
- android - 在 Android 设备中投射接收器
- java - 收到我认为是数组的语法错误,不知道要修复什么
- java - 如何在java中遍历列表并打印出来
- ruby-on-rails - Rails (rake) 数据导入并发
- c# - ModSecurity 操作 Azure API 管理
- apache-kafka - 使用 kafka 和 cassandra 进行事件溯源的类别预测
- c# - 如何在 Program.cs 和 Api 端点中分别使用一个变量作为业务组件?