允许前端与ExpressJS后端之间的相对路径
Allowing relative pathing for front-end with ExpressJS back-end
我正忙着用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
,它在client/pages/pageFolder
中服务index.html
。
在index.html
中,当试图在pageFolder
中包含index.js
时,响应是Cannot GET /index.html
,因为它正在向NodeJS服务器发送请求,而不是在当前目录中查找。
正如其他人建议的那样,有很好的理由使用let react或express来处理所有的路由。如果您当前的作业不允许这样做,那么您可能确实需要使用express。静态与一个完整的目录。
有了index.html和webpack bundle,你就可以把其他页面分成子目录,并确保相对路径指向静态html和js文件。
例如,如果index.html位于
public
- index.html
- bundle.js
- pagefolder
- - page.html
- - page.js
只要您提供整个公共目录,从index.html到./pagefolder/page.html
的链接将是有效的,等等
- 未能从后端触发javascript
- 检查浏览器'在asp.net的后端代码中启用或禁用了s JS
- Ajax登录技术(后端php)
- 将Rails后端添加到JS/HTML/CSS应用程序时,正确的文件位置是什么
- 视图没有't在模拟后端时加载
- 是否可以在不使用外部后端的情况下编写grafana数据源插件
- 如何将Angular 2用于各种网站&使用PHP作为后端的模块
- 如何在不重新加载URL的情况下查询Node.Js的后端并更新页面
- 从后端检查Open Social小工具中的用户身份验证
- 如何使用python后端和web前端提供braintree客户端令牌
- 某些Magento后端管理按钮已停止工作
- 构建一个HTML小部件来嵌入付费内容-如何确保与后端的通信安全
- 为什么Express.js后端的CORS设置不起作用
- 如何在前端和后端之间共享TypeScript/JavaScript
- 在Typescript前端和NodeJs后端之间共享js对象的最佳方式
- 在Java后端和javascript前端之间传输数据
- angularjs前端和nodejs后端之间的AJAX数据传输
- 保护HTML/ javascript前端和后端(身份验证)之间的请求
- 后端处理与phantomjs/nodejs之间的性能差异
- 允许前端与ExpressJS后端之间的相对路径