2016-03-24 3 views
2

Следуя руководству here, мне удалось получить пакет webpack для моего пакета для меня, и он работает для предварительного рендеринга на стороне сервера, например:React.NET, Webpack - «ReactDOM» не определен (на стороне клиента)

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

@Html.ReactInitJavaScript() 

Это правильно отображать мой компонент в браузере, но как только клиент берет на себя, я получаю ошибку 'ReactDOM' is undefined

Я установил react-dom используя npm install react-dom --save-dev
Я попытался require ReactDOM , f рвые в .jsx файл, содержащий мой компонент, то в client.js файл, который WebPack строит из:

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

или

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

Но я все еще получаю ту же ошибку.

Если добавить скрипты react и react-dom прямо над моей WebPack скомпилирован клиента JavaScript, то проблема уходит:

//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> 

Так как я могу получить Webpack правильно включить эти скрипты в связке клиента?

EDIT

Я имел следующий externals в моей webpack.config.js, но удаление их, кажется, не имеет никакого значения.

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

Я думаю, внешние есть, так что вы можете сценарии на основе использования CDN, поэтому, возможно, я overthinking этот и должен просто оставить CDN на основе реагировать сценарии на мой взгляд?

ответ

3

Вы должны подвергать react-dom глобально в вашем client.js, поэтому он будет доступен в браузере в ReactDOM переменной для отображения на стороне клиента:

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

Да, это так! я работал вокруг него, но это имеет большой смысл сейчас, спасибо :) –

Смежные вопросы