Node.js 如何通过节点读取react文件(ES6和jsx)以获取导出变量

Node.js 如何通过节点读取react文件(ES6和jsx)以获取导出变量,node.js,reactjs,babeljs,Node.js,Reactjs,Babeljs,当我试图读取包含路由器节点崩溃且出现错误的react文件时(我想构建站点地图,但即使我只是尝试将导出默认变量console.log记录下来,并且我收到此错误,可能需要babel配置): ReferenceError:未定义窗口 store.js代码。是否发生了错误 const store = createStore( rootReducer, defaultState, compose( applyMiddleware(thunk), window.devToolsE

当我试图读取包含路由器节点崩溃且出现错误的react文件时(我想构建站点地图,但即使我只是尝试将导出默认变量console.log记录下来,并且我收到此错误,可能需要babel配置):

ReferenceError:未定义窗口

store.js代码。是否发生了错误

const store = createStore(
  rootReducer,
  defaultState,
  compose(
    applyMiddleware(thunk),
    window.devToolsExtension ? window.devToolsExtension() : f => f
  )
);
有可能修复这个错误吗

react file test.js

require('es6-promise').polyfill();

import React from 'react';
import { render } from 'react-dom';
import { Provider } from 'react-redux';
import store, { history } from './redux/store';
import { Router, Route, IndexRoute } from 'react-router';
import App from './app';
....

const renderRouter = (<Provider store={store}>
      <Router history={history} >
        <Route path="/" component={App}>
.....
</Router>
</Prodiver
)

export default renderRouter;

假设您正在使用webpack,您可以通过将
redux/store.js
更改为

const store = createStore(
  rootReducer,
  defaultState,
  compose(
    applyMiddleware(thunk),
    global.devToolsExtension ? global.devToolsExtension() : f => f
  )
);
这将在Node.js运行时工作,其中定义了,而webpack将在其中工作

另一个不太依赖于生成系统的解决方案是检查是否定义了
window

const HAS_DEVTOOLS = typeof window === 'object' &&
  typeof window.devToolsExtension === 'function';

const store = createStore(
  rootReducer,
  defaultState,
  compose(
    applyMiddleware(thunk),
    HAS_DEVTOOLS ? global.devToolsExtension() : f => f
  )
);

仔细阅读错误消息:错误源于
redux/store.js
——为了接收有效的答案,您必须在此处共享该文件。错误还显示了通过错误发送的代码。store.js本应在浏览器上运行(其中定义了窗口),但在服务器端则不感谢您的响应,感谢您构建/开发我使用的webpack项目。我想运行一个脚本来读取路由器(来自appjs)并编写一个sitemap.xml。现在它弹出我的TypeError:require.context不是general.js文件的函数,该文件具有导出函数getImage(imagePath){const context=require.context('../../img/',true);返回上下文(imagePath);}require.context()存在于网页包中,但不在节点中。是否有任何教程指南可以阅读如何修复这些错误?在您提供的代码中,我看不到
require.context
callsite。鉴于这似乎已经解决了您的问题,我建议您接受此答案,并针对剩余问题提出新问题(每个问题提供相关信息)
const store = createStore(
  rootReducer,
  defaultState,
  compose(
    applyMiddleware(thunk),
    global.devToolsExtension ? global.devToolsExtension() : f => f
  )
);
const HAS_DEVTOOLS = typeof window === 'object' &&
  typeof window.devToolsExtension === 'function';

const store = createStore(
  rootReducer,
  defaultState,
  compose(
    applyMiddleware(thunk),
    HAS_DEVTOOLS ? global.devToolsExtension() : f => f
  )
);