2017-06-28 10 views
1

So versuche ich, eine Chat-basierte Anwendung mit React und Pubnub zusammen mit Node.JS zu erstellen. Alles ging gut über die Schöpfung App, mit Ausnahme eines ‚Unexpected Verwendung von Standortfehler‘ auf der folgenden Codezeile empfangen:(Unerwarteter Gebrauch von "Standort") Reagieren mit PubNub

Line 23: ssl: (location.protocol.toLowerCase() === 'https:'),  

    import React, { Component } from 'react'; 
    import logo from './logo.svg'; 
    import './App.css'; 
    import Messages from './Messages.js'; 
    import MessageHistory from './MessageHistory.js'; 
    import $ from 'jquery'; 
    import { BrowserRouter, Route, Link, NavLink, Switch } from 'react-router-dom'; 
    import Pubnub from 'pubnub'; 

    class App extends Component { 
     constructor(props){ 
     super(props); 
     this.state = { 
      username: '', 
      history: [], 
     } 
     this.sendMessage = this.sendMessage.bind(this); 
    } 
    componentDidMount() { 
     this.Pubnub = Pubnub.init({ 
     publish_key: 'pub-redacted', 
     subscribe_key: 'sub-redacted', 
     ssl: (location.protocol.toLowerCase() === 'https:'), 
     }); 
     this.Pubnub.subscribe({ 
     channel: 'Somerset', 
     message: (message) => this.setState({ 
      history: this.state.history.concat(message) 
     }) 
     }) 
    } 
     sendMessage = (message) => { 
     this.Pubnub.publish({ 
      channel: 'Somerset', 
      message: message, 
     }) 
     } 
     render() { 
     return (
      <BrowserRouter> 
      <div className="App"> 
      <MessageHistory history={this.state.history} /> 
      <Messages username={this.state.username} sendMessage={this.sendMessage} /> 
      </div> 
      </BrowserRouter> 
     ); 
     } 
      } 
      export default App; 

Irgendeine Idee, wie ich dieses Problem beheben?

+1

@CraigConover meine Schuld Craig! Ich habe vergessen zu antworten. Wenn Sie SSL auf "true" setzen, haben Sie es geschafft! Danke vielmals! –

+0

Großartig - Ich habe meine Kommentare zur offiziellen Antwort verschoben. –

Antwort

0

Verwenden Sie immer SSL

location Objekt (eine Eigenschaft des Fensters) ist in nicht verfügbar reagieren/Knoten wie sie im Browser ist. See this post on SO post für weitere Details.

Aber wirklich kein Grund, nicht SSL zu verwenden, wenn Sie Pubnub-Objekt initialisieren. Ich würde empfehlen, es nur auf True zu setzen, anstatt das Protokoll der App zu verwenden, um es bedingt einzustellen.

this.Pubnub = Pubnub.init({ 
    publish_key: 'pub-redacted', 
    subscribe_key: 'sub-redacted', 
    // ssl: true 
}); 
Verwandte Themen