如何在 cordova 应用程序中配置 node.js

How to configure node.js in a cordova application

这与我关于在 cordova/ionic 应用程序中更改 node.js 配置的问题有关 - How to configure node.js routes in a cordova app

我没有得到满意的答复。我还在他们的博客上与几个 cordova/ionic 人聊天,但他们提到 node.js 在这种情况下不能通过使用 express 配置,也不知道如何完成。

所以,我的问题是,在使用 cordova/ionic 应用程序时,是否可以在 node.js 服务器中更改默认端口或 url 重写?

很想知道你们的想法。

详细说明更多 -

假设我有几条这样的路线 -

http://localhost:6001/#/home/index
http://localhost:6001/#/content/index

因为我不想要 URL 中的散列,所以我在应用程序的配置部分添加了它 -

$locationProvider.html5Mode(true);

工作正常,URLs 不显示“#”,但在浏览器中刷新时,现在出现此错误 -

Cannot GET /home/index

这就是为什么我需要 URL 在服务器上重写,我似乎无法理解。

这些是我在 app.js -

中的路线
.state('home', {
            abstract: true,
            url: "/home",
            templateUrl: "app/home/home.html"
       })

.state('home.index',{
       url: "/index",
       views: {
           "index" : {
                      templateUrl: "app/home/index.html"
                     }
              }
       })

 $urlRouterProvider.otherwise('/home/index');

正如我们在聊天中讨论的那样,Cordova_CLI 项目使用固定服务器通过 cordova serve(或 ionic serve)进行快速部署。此节点服务器不使用 express 或其他插件来处理路由,它使用来自 [cordova-lib][1] 项目的脚本。

为此开发服务器提供的脚本未考虑 URL 重写,因此如果不修改此脚本,html5Mode 将无法正常工作。它可以是一个简单的分支,只需将 do404 函数逻辑替换为将 filePath 设置为 /index.html.

另一种选择是 运行 一个单独的 Web 服务器(node+express 或任何其他服务器)并在项目中包含 ionic/cordova 脚本。

理想情况下,生产应用程序将 运行 针对 public 服务器,而 Cordova_CLI 服务器应该只在开发环境中出现问题。