2016-03-24 17 views
2

Öğretici here dersini takiben, web paketini benim için benim yapmamı sağlamayı başardım ve sunucu tarafında ön işleme için çalışıyor, örneğin: React.NET, Webpack - 'ReactDOM' tanımlanmamış (istemci tarafı)

@Html.React("Components.myComponent", 
      New With { 
       .initialData = Nothing 
      }) 

@Html.ReactInitJavaScript() 

Bu

doğru tarayıcıda benim bileşeni görüntülüyor, ancak en kısa sürede müşteri üstlenir olarak ben react-dom npm install react-dom --save-dev
Ben require ReactDOM çalıştık kullanarak yüklemiş 'ReactDOM' is undefined

hatayı olsun f irst benim bileşen içeren .jsx dosyasında, ardından client.js içinde webpack gelen bina olduğunu dosyası:

//myComponent.jsx 
var React = require('react'); 
var ReactDOM = require('react-dom'); 

veya

//client.js 
var ReactDOM = require('react-dom'); 
var Components = require('expose?Components!./src'); 

Ama hala aynı hatayı alıyorum. Benim webpack derlenmiş istemci javascript yukarıdaki doğrudan react ve react-dom komut eklerseniz

, o zaman sorun ortadan kalkar:

//index.html 
<script src="https://www.facebook.com/react-0.14.0.min.js"></script> 
<script src="https://www.facebook.com//react-dom-0.14.0.min.js"></script> 
<script src="~/Scripts/webpack/build/client.bundle.js"></script> 

Peki nasıl düzgün müşteri grubunda bu komut dosyalarını içerecek şekilde WebPack alabilirim?

DÜZENLEME

Ben benim webpack.config.js aşağıdaki externals olmuş, ancak bunları kaldırmayı herhangi bir fark yaratmak için görünmüyor. Sanırım

externals: { 
    // Use external version of React (from CDN for client-side, or 
    // bundled with ReactJS.NET for server-side) 
    react: 'React' 
} 

, Dışındakiler vardır böylece can kullanım CDN tabanlı komutlar, belki ben bunu overthinking ediyorum ve sadece CDN Bence komut dosyalarını tepki merkezli bırakmalısınız?

cevap

3

listenize client.js dünya çapında react-dom göstermelidir, bu nedenle istemci tarafında işlemek için ReactDOM değişkeni tarayıcıda kullanılabilir:

require("expose?ReactDOM!react-dom"); 
+0

Evet, işte bu! etrafında çalışmıştım ama bu şimdi çok anlam ifade ediyor, teşekkürler :) –

İlgili konular