使用AngularJS,Parse-Server和Heroku

时间:2017-03-15 16:55:58

标签: javascript angularjs node.js heroku parse-server

我有一个运行parse-server的节点服务器,我使用免费套餐在Heroku上托管。我使用AngularJS构建了一个Web应用程序,用于从服务器检索数据。在本地开发之后,我还在Heroku上托管了webapp,由于某种原因,我得到了一个混合内容警告,我的所有图像都是这样的:

  

混合内容:' https:// MYWEBAPP.herokuapp.com'通过HTTPS加载,但请求不安全的图像
  ' http:// MYPARSESERVER.herokuapp.com/parse/files/SOMEIMAGE.jpg'。此内容也应通过HTTPS提供。

我的解析服务器正在使用https,但出于某种原因,只是对文件的请求似乎通过http。

由于这是我第一次构建和托管整个堆栈,我不完全确定这是我的Angular应用程序,我的解析服务器配置还是只是一个heroku设置的问题。

如果有人对问题的可能位置有任何想法,我可以提供代码片段来帮助澄清。谢谢你的帮助!

代码示例:

在我的角应用中app.js

function parseInit($rootScope) {
    Parse.initialize("MY_APP_ID");
    Parse.serverURL = 'https://MY_PARSE_SERVER.herokuapp.com/parse';

    $rootScope.currentUser = Parse.User.current();
}

从后端检索数据的示例,包括似乎导致问题的File对象:

function getEvents() {
   let q = $q.defer();

   let Event = Parse.Object.extend('Event');
   let query = new Parse.Query(Event);

   query
     .include('poster')
     .find({
       success: (events) => {
         q.resolve(events);
       },
       error: (object, error) => {
         q.reject(error);
       }
     });

   return q.promise;
 }

在我的parse-server中的app.js

const express = require('express');
const ParseServer = require('parse-server').ParseServer;
const ParseDashboard = require('parse-dashboard');
const path = require('path');
const env = require('./env.json');

var node_env = process.env.NODE_ENV || "development";
var config = env[node_env];

var api = new ParseServer({
   databaseURI: process.env.MONGODB_URI || config.databaseUri,
   cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
   appId: MY_APP_ID,
   masterKey: MY_MASTER_KEY,
   serverURL: process.env.SERVER_URL || config.serverUrl, 
   facebookAppIds: ["MY_FACEBOOK_APP_ID"],
   revokeSessionOnPasswordReset: true
});

var dashboard = new ParseDashboard({
   "apps": [{
      "serverURL": process.env.SERVER_URL || config.serverUrl,
      "appId": config.appId,
      "masterKey": config.masterKey,
      "appName": "api",
   }]
});

var app = express();

// Serve the Parse API on the /parse URL prefix
var mountPath = process.env.PARSE_MOUNT || '/parse';
app.use(mountPath, api);
app.use("/dashboard", dashboard)

var port = process.env.PORT || 1337;
app.listen(port, function() {
  console.log('Running on port ' + port + '.');
});

process.env.SERVER_URL由我的heroku设置传递,目前是https:// MY_PARSE_SERVER.herokuapp.com/parse

1 个答案:

答案 0 :(得分:0)

这个问题非常模糊,您的问题可能在堆栈中的任何位置,或者更多地涉及整个应用程序配置。

假设您已正确配置服务器端的所有内容......

从AngularJS方面,我会在模板中找到<script>(来自您的错误消息)或onPostExecute标记,并确保您使用https而不是http来请求资源