Сервер Parse, работающий локально, имеет ошибку при вызове входа пользователя

Есть ли какая-то причина, по которой я получаю эту ошибку при локальном запуске сервера синтаксического анализа, но не при размещении на Heroku? Статус: 100 Сообщение: XMLHttpRequest не удалось: «Невозможно подключиться к Parse API»

У меня установлен и работает mongodb локально. У меня также есть файл .env, содержащий APP_ID и MASTER_KEY, который локально загружается с помощью dotenv.

Вот сокращенный пример того, что я пытаюсь сделать...

var express = require('express');
var bodyParser = require('body-parser');
var dotenv  = require('dotenv').config({silent: true});
var ParseServer = require('parse-server').ParseServer;
var Parse = require('parse/node');

// Set up the parse server
var databaseUri = process.env.DATABASE_URI || process.env.MONGOLAB_URI;
var api = new ParseServer({
  databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: process.env.APP_ID || 'myAppId',
  masterKey: process.env.MASTER_KEY || ''
});

// Set up express
var app = express();
app.use(express.static(__dirname + '/public'));
var mountPath = process.env.PARSE_MOUNT || '/parse';
app.use(mountPath, api);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
}));

// Initialize parse so that I can use in my routes and controllers
Parse.initialize(process.env.APP_ID,'unused');
Parse.serverURL = process.env.SERVER_URI || 'http://locahost:1337/parse';

// Routes
app.get('/', function(req, res) {
  res.status(200).send('[form goes here that sends POST to "/sign-up"]');
});
app.post('/sign-up', function(req, res) {
  var user = new Parse.User();
  user.set("email", req.body.inputEmail);
  user.set("password", req.body.inputPassword);

  user.signUp(null, {
    success: function(user) {
      res.status(200).send('Signup Success!');
    },
    error: function(user, error) {
      res.status(200).send('Signup Failed');
    }
  });
});

var port = process.env.PORT || 1337;
app.listen(port);

person enjoyjeremy    schedule 18.02.2016    source источник


Ответы (1)


Ошибка Unable to connect to the Parse API означает, что Parse sdk не может подключиться к данному serverURL. В вашем случае это опечатка: http://locahost:1337/parse должно быть http://localhost:1337/parse?

Вы также должны удалить var Parse = require('parse/node'); и пользовательскую инициализацию, так как пакет SDK для синтаксического анализа будет инициализирован на сервере Parse, а Parse будет доступен глобально. Взгляните на пример использования в файле readme. Ваш код должен выглядеть примерно так:

var express = require('express');
var bodyParser = require('body-parser');
var dotenv  = require('dotenv').config({silent: true});
var ParseServer = require('parse-server').ParseServer;

// Set up the parse server
var databaseUri = process.env.DATABASE_URI || process.env.MONGOLAB_URI;
var api = new ParseServer({
  databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: process.env.APP_ID || 'myAppId',
  masterKey: process.env.MASTER_KEY || '',
  serverURL: process.env.SERVER_URI || 'http://localhost:1337/parse'
});

// Set up express
var app = express();
app.use(express.static(__dirname + '/public'));
var mountPath = process.env.PARSE_MOUNT || '/parse';
app.use(mountPath, api);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
}));

// Routes
app.post('/sign-up', function(req, res) {
  var user = new Parse.User(); // Parse available as a global variable
});

var port = process.env.PORT || 1337;
app.listen(port);
person Simon Bengtsson    schedule 20.02.2016
comment
Да это оно! Спасибо за помощь Саймон. - person enjoyjeremy; 21.02.2016
comment
Еще один вопрос: у меня возникли проблемы с получением User.logIn для создания сеанса с помощью этого метода. Я могу успешно войти в систему пользователя, но когда я перехожу к другим маршрутам, у меня нет доступа к объекту request.user, потому что я считаю, что он доступен только в облачных функциях. Другими словами: если я не могу использовать Parse.User.current() с parse-server, как можно использовать request.user в app.get('/route') маршрутах? - person enjoyjeremy; 22.02.2016
comment
Хороший вопрос! Вы должны сделать это вручную на данный момент. Ознакомьтесь с моим ответом здесь для примера реализации: github.com/ParsePlatform/parse-server/issues /497 - person Simon Bengtsson; 22.02.2016
comment
Интересно, попробую и отчитаюсь. - person enjoyjeremy; 23.02.2016
comment
Хорошо, кажется, это работает. Отличный момент об использовании jwt вместо того, чтобы делать запросы при каждой загрузке страницы. Я посмотрю, смогу ли я это реализовать. Спасибо еще раз! - person enjoyjeremy; 23.02.2016
comment
Удачно реализовать jwt? Я над головой и был бы очень признателен за любую помощь, которую я мог бы получить. - person mnearents; 12.11.2016