【发布时间】:2016-07-16 14:24:06
【问题描述】:
我在使用窗口对象的浏览器上使用 websockets。但是因为我使用的是带有反应的服务器端渲染。我的服务器在编译时崩溃并引发以下错误
[Error] ReferenceError: window is not defined
特别是因为我的一个组件需要客户端套接字才能与服务器通信。
我尝试在我的 server.js 文件的开头添加以下代码
if (typeof(window) == 'undefined'){
global.window = new Object();
}
但由于某种原因它仍然会引发错误。我还能做什么?有人处理过这个问题吗?
更新 - 问题可能不只是特定于套接字。基本上,我正在从我的组件中的以下文件中导入几个对象
import React from 'react';
import ReactDOM from 'react-dom';
import {Provider} from 'react-redux';
import {createStore} from 'redux';
import { Router, Route, browserHistory ,IndexRoute} from 'react-router'
import routes from '../shared/routes/routes';
import rootReducer from '../shared/reducers/index';
import SocketCluster from 'socketcluster-client';
const initialState = window.__INITIAL_STATE__
export const store = createStore(rootReducer,initialState)
const options = {
port: 3000
}
if(store.getState().User.isAuthenticated){
const socket = SocketCluster.connect(options)
}
console.log(store.getState())
ReactDOM.render(
<Provider store={store}>
<Router history={browserHistory}>
{routes}
</Router>
</Provider>
,document.getElementById('app')
)
在我的组件中
import React from 'react';
import Skill from './skill';
import Select from 'react-select';
import {socket ,store} from '../../client/index';
由于某种原因,我收到错误消息。服务器也在查看window.__INITIAL_STATE__。所以问题是我似乎无法从客户端的 index.js 文件中导入任何内容。
我能做什么?
【问题讨论】:
标签: javascript reactjs websocket redux