2016-03-03 18 views
0

我正嘗試使用NodeJs構建一個同構React應用程序。在NodeJS的服務器端渲染期間,React無法找到data-reactid值「.3r0ietj75s.0.0.0.0.0.1」的根組件節點

節點server.js文件使用'node-jsx-babel'來傳輸我反應組件的Jsx文件。

上server.js我在我的服務器路由文件得到

require('node-jsx-babel').install({ extension: '.jsx'}); 

,我所說的反應成分,像這樣。

var React = require('react'); 
var ReactDOMServer = require('react-dom/server'); 
var Catalog = React.createFactory(require('./js/src/Components/Catalog/Catalog')); 

app.get('/routename', function(req, res){ 


var reactHtml = ReactDOMServer.renderToString(Catalog({ 
    columns: 3, 
    ... 

    })); 
    // Output html rendered by react 

    res.render('reactSearch.ejs', {reactOutput: reactHtml}); 
    }); 

在安裝目錄組件進行API調用到另一個節點的API,並得到了一些數據,這些數據被成功地獲得在它的狀態變量this.state.data。這個組件的渲染塊看起來像這樣。

render: function() { 

var MenuList = this.state.data.menu.map(function(menuItem,index){ 

    return(
     <li key={index}> 
      <a className="search_prevent" href={menuItem.u}> {menuItem.n} </a> 

     </li> 
    ) 
    }); 

return (
<ul className="menu"> 
    {MenuList} 
</ul> 

) 
} 

在重新加載瀏覽器localhost:<port>/routename時,節點應用程序崩潰並出現此錯誤。

Warning: React can't find the root component node for data-reactid value `.3r0ietj75s.0.0.0.0.0.1`. If you're seeing this message, it probably means that you've loaded two copies of React on the page. At this time, only a single copy of React can be loaded at a time. 
/Users/nikil/Documents/ReactIsomorphicDemo/node_modules/react/lib/ReactMount.js:715 
    firstChildren[0] = deepestAncestor.firstChild; 

我可以讓頁面沒有任何錯誤加載的罰款,如果我從渲染塊的<ul>內刪除{}菜單列表。如果我用{你好}替換{MenuList},頁面會用ul和word來表示你好。 當我嘗試映射我獲得的數據並將其分配給ul時,應用程序崩潰。

我已確保反應組件不是我的任何其他組件的子依賴項,包括React-DOM。

以下是npm ls的輸出以顯示我的依賴關係圖。

─┬ [email protected] 
 
│ ├── [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ └── [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ └── [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ ├─┬ [email protected] 
 
│ │ │ ├── [email protected] 
 
│ │ │ ├── [email protected] 
 
│ │ │ └─┬ [email protected] 
 
│ │ │ └── [email protected] 
 
│ │ └── [email protected] 
 
│ ├── [email protected] 
 
│ ├── [email protected] 
 
│ ├── [email protected] 
 
│ ├── [email protected] 
 
│ ├── [email protected] 
 
│ ├── [email protected] 
 
│ ├── [email protected] 
 
│ ├── [email protected] 
 
│ └── [email protected] 
 
├── [email protected] 
 
├─┬ [email protected] 
 
│ ├── [email protected] 
 
│ ├── [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ └── [email protected] 
 
│ ├── [email protected] 
 
│ ├── [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ └── [email protected] 
 
│ ├── [email protected] 
 
│ ├── [email protected] 
 
│ ├── [email protected] 
 
│ ├── [email protected] 
 
│ └─┬ [email protected] 
 
│ └── [email protected] 
 
├── [email protected] 
 
├─┬ [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ ├─┬ [email protected] 
 
│ │ │ ├─┬ [email protected] 
 
│ │ │ │ ├─┬ [email protected] 
 
│ │ │ │ │ └── [email protected] 
 
│ │ │ │ ├── [email protected] 
 
│ │ │ │ ├─┬ [email protected] 
 
│ │ │ │ │ └── [email protected] 
 
│ │ │ │ ├─┬ [email protected] 
 
│ │ │ │ │ └── [email protected] 
 
│ │ │ │ └── [email protected] 
 
│ │ │ ├── [email protected] 
 
│ │ │ ├── [email protected] 
 
│ │ │ ├─┬ [email protected] 
 
│ │ │ │ └── [email protected] 
 
│ │ │ └─┬ [email protected] 
 
│ │ │ └─┬ [email protected] 
 
│ │ │  └── [email protected] 
 
│ │ ├─┬ [email protected] 
 
│ │ │ ├─┬ [email protected] 
 
│ │ │ │ ├── [email protected] 
 
│ │ │ │ └── [email protected] 
 
│ │ │ ├─┬ [email protected] 
 
│ │ │ │ └─┬ [email protected] 
 
│ │ │ │ └── [email protected] 
 
│ │ │ ├─┬ [email protected] 
 
│ │ │ │ └─┬ [email protected] 
 
│ │ │ │ └── [email protected] 
 
│ │ │ └── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├─┬ [email protected] 
 
│ │ │ ├── [email protected] 
 
│ │ │ ├─┬ [email protected] 
 
│ │ │ │ ├── [email protected] 
 
│ │ │ │ └── [email protected] 
 
│ │ │ ├─┬ [email protected] 
 
│ │ │ │ └── [email protected] 
 
│ │ │ └─┬ [email protected] 
 
│ │ │ └─┬ [email protected] 
 
│ │ │  └── [email protected] 
 
│ │ ├─┬ [email protected] 
 
│ │ │ └── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├─┬ [email protected] 
 
│ │ │ ├── [email protected] 
 
│ │ │ ├─┬ [email protected] 
 
│ │ │ │ └─┬ [email protected] 
 
│ │ │ │ └── [email protected] 
 
│ │ │ └─┬ [email protected] 
 
│ │ │ └─┬ [email protected] 
 
│ │ │  └── [email protected] 
 
│ │ ├─┬ [email protected] 
 
│ │ │ ├── [email protected] 
 
│ │ │ └── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├─┬ [email protected] 
 
│ │ │ └── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├─┬ [email protected] 
 
│ │ │ └─┬ [email protected] 
 
│ │ │ ├── [email protected] 
 
│ │ │ └── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ ├── [email protected] 
 
│ │ └── [email protected] 
 
│ └─┬ [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ └─┬ [email protected] 
 
│ │ └── [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ └─┬ [email protected] 
 
│ │ └── [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ └─┬ [email protected] 
 
│ │ └── [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ └─┬ [email protected] 
 
│ │ └── [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ ├─┬ [email protected] 
 
│ │ │ ├─┬ [email protected] 
 
│ │ │ │ ├─┬ [email protected] 
 
│ │ │ │ │ ├─┬ [email protected] 
 
│ │ │ │ │ │ ├─┬ [email protected] 
 
│ │ │ │ │ │ │ ├─┬ [email protected] 
 
│ │ │ │ │ │ │ │ └── [email protected] 
 
│ │ │ │ │ │ │ ├── [email protected] 
 
│ │ │ │ │ │ │ ├─┬ [email protected] 
 
│ │ │ │ │ │ │ │ └── [email protected] 
 
│ │ │ │ │ │ │ ├─┬ [email protected] 
 
│ │ │ │ │ │ │ │ └── [email protected] 
 
│ │ │ │ │ │ │ └── [email protected] 
 
│ │ │ │ │ │ ├── [email protected] 
 
│ │ │ │ │ │ └─┬ [email protected] 
 
│ │ │ │ │ │ └── [email protected] 
 
│ │ │ │ │ ├── [email protected] 
 
│ │ │ │ │ ├── [email protected] 
 
│ │ │ │ │ ├─┬ [email protected] 
 
│ │ │ │ │ │ └── [email protected] 
 
│ │ │ │ │ ├── [email protected] 
 
│ │ │ │ │ ├─┬ [email protected] 
 
│ │ │ │ │ │ └─┬ [email protected] 
 
│ │ │ │ │ │ └── [email protected] 
 
│ │ │ │ │ └─┬ [email protected] 
 
│ │ │ │ │ └─┬ [email protected] 
 
│ │ │ │ │  └── [email protected] 
 
│ │ │ │ └── [email protected] 
 
│ │ │ ├── [email protected] 
 
│ │ │ └── [email protected] 
 
│ │ └─┬ [email protected] 
 
│ │ └── [email protected] 
 
│ └─┬ [email protected] 
 
│  └─┬ [email protected] 
 
│  └── [email protected] 
 
├─┬ [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ ├─┬ [email protected] 
 
│ │ │ ├── [email protected] 
 
│ │ │ ├── [email protected] 
 
│ │ │ └─┬ [email protected] 
 
│ │ │ └── [email protected] 
 
│ │ └── [email protected] 
 
│ └─┬ [email protected] 
 
│ ├── [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ └── [email protected] 
 
│ ├─┬ [email protected] 
 
│ │ └── [email protected] 
 
│ ├── [email protected] 
 
│ └── [email protected] 
 
├── [email protected] 
 
├── [email protected] 
 
├── [email protected] 
 
└─┬ [email protected] 
 
    ├── [email protected] 
 
    └─┬ [email protected] 
 
    ├── [email protected] 
 
    ├── [email protected] 
 
    ├─┬ [email protected] 
 
    │ └── [email protected] 
 
    ├── [email protected] 
 
    ├─┬ [email protected] 
 
    │ ├── [email protected] 
 
    │ └─┬ [email protected] 
 
    │ └── [email protected] 
 
    ├── [email protected] 
 
    ├── [email protected] 
 
    ├── [email protected] 
 
    ├─┬ [email protected] 
 
    │ ├── [email protected] 
 
    │ ├── [email protected] 
 
    │ ├── [email protected] 
 
    │ └── [email protected] 
 
    └── [email protected]

不知道是什麼原因造成了這個問題。希望能夠幫助解決這個問題的任何想法。謝謝

回答

0

我想出問題是API的異步性質。 將文件內的數據內聯後,一切都很好。

只需要加入某種回調機制來完成這項工作。

雖然奇怪的錯誤信息。

相關問題