Ich baue eine App mit React-Meteor
und habe Probleme mit der Zufälligkeit seines Verhaltens. Wenn Teile des App, erhalte ich einen Fehler, der sagt:React-Meteor "kann die Eigenschaft X von undefined nicht lesen" von einer anderen Seite
Kann nicht Eigenschaft X undefinierten
lesen, aber die X (und machen davon) ist von einer anderen Seite, in der Regel aus die Seite, auf der ich vorher war, manchmal von vielen anderen Seiten. Wenn ich jedoch aktualisiere und versuche, wird es keine Fehler erzeugen.
Der Fehler, wenn nur eine zeigt sich wie folgt:
Exception from Tracker recompute function:
debug.js:41 TypeError: Cannot read property 'jobId' of undefined
at React.createClass.getMeteorData (user.jsx:209)
at meteor-data-mixin.jsx:89
at Tracker.Computation._compute (tracker.js:323)
at new Tracker.Computation (tracker.js:211)
at Object.Tracker.autorun (tracker.js:562)
at meteor-data-mixin.jsx:76
at Object.Tracker.nonreactive (tracker.js:589)
at MeteorDataManager.calculateData (meteor-data-mixin.jsx:75)
at ReactMeteorData.componentWillUpdate (meteor-data-mixin.jsx:22)
at ReactCompositeComponentMixin._performComponentUpdate (ReactCompositeComponent.js:535)
In einigen Fällen mehrere von ihnen werden von ein paar anderen Seiten mit unterschiedlichen Xs zeigen.
Dies ist der Code der Seite Ich bin auf:
Template.addNotification.onRendered(function() {
ReactDOM.render(<AddNotification />,
document.getElementById("addNotification"));
});
AddNotification = React.createClass({
addNotification: function(evt) {
evt.preventDefault();
notificationInfo = {
message: ReactDOM.findDOMNode(this.refs.msg).value,
notifType: ReactDOM.findDOMNode(this.refs.notifType).value,
user: ReactDOM.findDOMNode(this.refs.user).value
};
Meteor.call("addNotification", notificationInfo);
},
addBunch: function(evt) {
evt.preventDefault();
Meteor.call("addBunch", Meteor.userId());
},
render() {
return (
<div>
<div>Message:<input type="text" ref="msg"/></div>
<div>Type:<input type="text" ref="notifType"/></div>
<div>User:<input type="text" ref="user"/></div>
<button onClick={this.addNotification}>Add</button>
<button onClick={this.addBunch}>
Or, add a bunch to current</button>
</div>
);
}
});
Sie können sehen, dass ich nicht einmal etwas aufrufen, die jobId
auf dieser Seite benötigt.
Es ist ein sehr häufiger Fehler in js - vor allem in Meteor-Apps. Sehen Sie sich [diesen Beitrag] an (http://dweldon.silvrback.com/guards). –
Hallo, danke für die Antwort. Hatte eine Lektüre und wunderte sich, wenn Sie sagen: "Während Eisen-Router einen langen Weg zur Lösung des Problems geht, behebt es nicht den Fall, wo die Daten einfach nicht da sind.", Meinen Sie den Fall, wo die Daten nicht sind Ja, oder nur dass es keine Daten gibt, zu erwarten? – ys27
Ich meine den Fall, wo gerade keine Daten in der db sind. –