![](/img/trans.png)
[英]In Express.js, I am not able to use my static resourses in my root route
[英]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.