繁体   English   中英

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

[英]Express.js: Specifying a root route breaks static file resolvement

我正在尝试制作一个 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 );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM