Express.js:指定根路由会破坏静态文件解析

问题描述

我正在尝试制作一个express.js / react.js应用,但遇到了两个我找不到答案的问题。

我建立了一个包含Express服务器的基本目录,一个名为client的子目录,该目录包含了我的react应用程序。

在许多示例中,我使用默认值时

app.get( express.static( path.join( __dirname,'client/build' ) ) );

该应用程序可以正常工作并正确加载每个文件。

但是我不希望该应用程序在服务器的根目录下运行,而是在子目录中运行。例如/app

所以,根据我的发现。我需要在server.js中进行以下更改:

app.get( '/app',express.static( /*...*/ ) );

我还修改了我的react应用,以更改其链接以包含/app。但是,添加根会破坏一切。不会加载默认的index.html。没有其他文件被加载。 尝试请求链接到文件之一时。我得到Cannot GET /app/favicon.ico(按示例),与请求不存在的路径时得到的消息相同。

我也没有尝试成功:

router.get( express.static( /*...*/ ) );
app.get( '/app',router );

app.route( '/app' ).get( express.static( /*...*/ ) );

我想念什么?

解决方法

事实证明。您将不得不使用express.use而不是express.get。起初,我不了解它们之间的区别,但是在将所有调用更改为.use之后。一切正常。

工作代码:

app.use( '/app',express.static( /*...*/ ) );

以及

const approuter = express.Router();
approuter.use( express.static( /*...*/ ) );
app.use( '/app',approuter );

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...