0

我目前正在为使用 node.js 托管的 AngularJS 前端编写 Web 服务(使用 node.js)

它稍后将通过 domain.com/api 下的代理提供,因此我不需要 JSONP。

出于本地测试目的,我的 AngularJS 应用程序在 localhost:80 上运行,我的 node.js 后端在 localhost:3000 上运行。自然我无法查询 json 请求。容易

什么是在本地测试我的主页而不在我的设置中搞太多的最佳设置?

我目前正在研究窗户。如果 Linux 更容易,它也是一种选择。

是否可以为 express 编写一个在同一域中托管两个应用程序的简单代理?

4

2 回答 2

0

您可以使用 hosts 文件将 domain.com/api 设置为 localhost。这是/etc/hosts在 Linux 中完成的,但它也存在于 Windows 中。对我有很大帮助的另一件事是 ssh 隧道。例如,您可以将远程端口(您的后端正在运行的地方)通过隧道连接到 localhostssh -L localPort:your.server:remotePort

于 2013-01-03T12:30:47.413 回答
0

这并不完全符合您的要求,但最简单的方法可能是让 node.js 应用程序也为 AngularJS 应用程序提供服务。它非常有效,肯定足以用于开发。

如果它是一个 expressjs 应用程序,你可以添加

app.use(express['static'](__dirname + "/public"));

在其他路线之前,让它在 ./public/ 中查找静态文件

如果您的应用程序由您无法在 node.js 中轻松复制的模板或构建系统提供服务,那么另一种选择是在某个端口(80 或 5000 或 ...)上运行 nginx、apache 或 haproxy 并拥有它代理到应用程序的当前后端服务器和 API/数据请求的端口 3000(node.js 应用程序)。

您甚至可以让您的服务器当前在端口 80 上运行来执行此操作。

作为最后的想法,您还可以将 node.js 应用程序设置为“应用程序文件”的代理端口 80。

编辑- 我刚刚意识到您的两个应用程序都是用 node.js 编写的。是否可以设置它以便您在生产中单独运行它们但在开发中一起运行?将所有真正的功能放在模块中,然后拥有三个单独的“加载器”来启动应用程序,一个在一起,然后每个单独的加载器。

于 2013-01-03T12:54:00.590 回答