Прежде всего спасибо за то, что нашли время, чтобы прочитать это, я должен сказать, что я новичок в мире веб-разработки. Я просил реализовать mailchimp (я никогда не слышал об этом) в проекте, для этого я только начал поиск информации о chimpmail API, также я пошел по учебнику от meteorchef, и проблема в том, что я могу сделать эту работу, я нашел довольно сложно реализовать это с помощью React. У меня проблемы с моими методами, когда я ввожу почту и запускаю метод onSubmit, вывод консоли говорит, что «метод handleSubscriber не найден». До сих пор я только что сделал часть handleSubscriber из учебника, я не показываю ни одного электронного списка рассылки. Я запускаю приложение Meteor с meteor --settings=settings.json
. Я буду очень признателен за помощь.Как использовать chimpmail в Meteor + React?
Update
я получил полезный комментарий, указать его, что я должен добавить свой файл методы в мой каталог сервера. Делая это, я больше не получил «метод handleSubscriber не найден» вместо того, что теперь я получил Exception while invoking method 'handleSubscriber' Error: Match error: Expected object, got null
Это мои Метеор пакеты:
meteor-base
mobile-experience
mongo
blaze-html-templates
reactive-var
jquery
tracker
library
standard-minifier-css
standard-minifier-js
es5-shim
ecmascript
[email protected]
accounts-ui
accounts-password
practicalmeteor:mocha
miro:mailchimp
fortawesome:fontawesome
themeteorchef:bert
standard-app-packages
underscore
themeteorchef:jquery-validation
check
Это мой settings.json
{
"public": {},
"private": {
"MailChimp": {
"apiKey": "theapikey",
"listId": "thislsitId"
}
}
}
в chimpMail.js
import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
const settings = Meteor.settings.private.MailChimp;
const chimp = new MailChimp(settings.apiKey, { version: '2.0' });
const listId = settings.listId;
Meteor.methods({
'handleSubscriber'(subscriber) {
check(subscriber, {
email: String,
action: String,
});
try {
const subscribe = chimp.call('lists', subscriber.action, {
id: listId,
email: {
email: subscriber.email,
},
});
return subscribe;
} catch (exception) {
return exception;
}
},
});
Это мой emailSubscription.js х
import { Meteor } from 'meteor/meteor';
import React, { Component } from 'react';
import { createContainer } from 'meteor/react-meteor-data';
class EmailSubscription extends Component {
handleOnSubmit(event) {
event.preventDefault();
Meteor.call('handleSubscriber', this.props.subscriber,
function(error, response) {
if (error) {
Bert.alert(error.reason, "warning");
} else {
if (response.complete || response.euid) {
const subscribeMessage = 'Please confirm your email to
complete your subscription!';
const unsubscribeMessage = subscriber.email + 'successfully
unsubscribed!';
const message = subscriber.action === "subscribe" ?
subscribeMessage : unsubscribeMessage;
Bert.alert(message, "success");
} else {
Bert.alert(response.message, "warning");
}
}
});
}
render() {
return (
<div className="container">
<form onSubmit={this.handleOnSubmit.bind(this)}
className="emal-submit"
>
<input type="email" placeholder="[email protected]" />
<button>Sign Me Up!</button>
</form>
</div>
);
}
}
export default createContainer(() => {
}, EmailSubscription);
«обработчик методаПодписка не найдена» говорит, что ваш метод. Импортируйте файл методов в каталог сервера. –
Спасибо за ваш комментарий, я забыл об этом! Я импортировал mailChimp.js в свой каталог сервера, и я получил следующую ошибку: «Исключение при вызове метода« handleSubscriber »Ошибка: ошибка совпадения: ожидаемый объект, получил нуль –