我正忙着使用Express 4.14构建应用程序。关于路由,当请求以“https://example.com/page”形式出现时,例如我正在使用res.sendFile(__dirname + "/../client/pages/page/index.html");
。
前端开发人员使用页面中的相对链接来包含他的ReactJS脚本 - 例如,他使用像<script src="js/index.js"></script>
这样的标记。当然,问题是js/index.js
的请求将转到NodeJS服务器并返回404,因为项目的根目录中没有文件/js/index.js
,而是client/pages/home/js/index.js
。有没有办法允许从页面文件夹中进行相对路径?
我正在使用express.static
中间件,但问题是有多个页面,每个页面都有旧文件夹 - 它们被分成了自己的小SPA,以便制作一个/public
个静态使用当前设置,目录不可行。
这是文件目录设置:
project
|- server.js
| |- node_modules
| |- config
| |- controllers
| |- models
| |- client
| |- pages (Splitting the pages into React SPA)
| |- pageFolder (React SPA, one per module we need.)
| |- page.html
| |- other files here..
路由到客户端的控制器是controllers/clientCtrl.js
,它在index.html
中提供client/pages/pageFolder
。
在index.html
中尝试在index.js
中包含pageFolder
时,响应为Cannot GET /index.html
,因为它将请求发送到NodeJS服务器而不是查看当前目录
任何建议都将受到赞赏。
答案 0 :(得分:0)
正如其他人所建议的那样,有充分的理由使用let react或express来处理所有路由。如果您当前的作业不允许这样做,您可能希望将express.static与完整目录一起使用。
通过拥有index.html和webpacked包,您可以将其他页面拆分为子目录,并确保相对路径指向静态html和js文件。
例如,如果index.html存在于
中 public
- index.html
- bundle.js
- pagefolder
- - page.html
- - page.js
只要您提供整个公共目录,从index.html到./pagefolder/page.html
的链接就会生效,等等。