如何在 Ionic 移动应用程序中运行 Node.js 服务器?

Shu*_*kar 4 mongodb node.js cordova ionic-framework

我正在使用 MEAN 和 ionic 框架制作一个应用程序,其中 nodejs 是连接到数据库(mongoDb)的中间件。我需要使用运行 nodejs 服务器node server.js和使用ionic serve. 这是我的 server.js。

var express          = require('express'),
app              = express(),
bodyParser       = require('body-parser'),
mongoose         = require('mongoose'),
CohortController =require('./www/server/controller/CohortController');

mongoose.connect('mongodb://localhost:27017/persistent');

app.use(bodyParser());

app.get('/api/cohorts',CohortController.list);
app.post('/api/cohorts',CohortController.create);

app.listen(3000,function(){
console.log('Listening...');
})
Run Code Online (Sandbox Code Playgroud)

现在这是我的 app.js。我http://localhost:3000用来获取JSON。

var express          = require('express'),
app              = express(),
bodyParser       = require('body-parser'),
mongoose         = require('mongoose'),
CohortController =require('./www/server/controller/CohortController');

mongoose.connect('mongodb://localhost:27017/persistent');

app.use(bodyParser());

app.get('/api/cohorts',CohortController.list);
app.post('/api/cohorts',CohortController.create);

app.listen(3000,function(){
console.log('Listening...');
})
Run Code Online (Sandbox Code Playgroud)

当我将其转换为移动应用程序时,如何运行节点服务器?应用程序将如何使用 API?

Nik*_*ola 5

您必须让 Node.js 应用程序在服务器上运行,然后您可以通过它的公共 IP 访问(从您的 Ionic 应用程序)。因此,您不会使用http://localhost:3000获取 JSON,而是使用类似http://123.456.789.123:3000.

但是,通常情况下,您不会这样做(使用端口 3000)。您还需要做的是(例如)将 Nginx 放在您的 Node.js 应用程序的前面(请参阅此处的示例),以便从标准 HTTP 端口 (80) 为您的 API 提供服务。

所以,基本上,你实际上不能“在 Ionic 应用程序中运行 Node.js 服务器”——你这样做的方式是运行与 Ionic 分开的 Node.js 应用程序并通过标准化的 API 公开它的功能(现在通常是REST你会想要实现)然后你通过 Ionic 的(好吧,准确地说,它实际上是 Angular 的)$resource module来“消费” 。

希望这有助于澄清一些事情。