如何解决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 );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。