2

Я пытаюсь использовать React + ReactDOM через RequireJS в мини-файле, который действует как отдельная библиотека.Использование React-dom с RequireJS в минифилированном файле

Я пришел к тому моменту, когда я могу использовать React (в комплекте с миниатюрным файлом), но при попытке использовать ReactDOM все ломается, то, что я нашел до сих пор, заключается в том, что при попытке загрузить «require-dom» «требует попыток импортировать файл« реакция-dom »вместо загрузки кода из мини-файла. (Который фактически содержит реакцию).

На самом деле я использую grunt для предварительной компиляции всех требуемых файлов. Вот мой рубаки requirejs конфигурации:

requirejs: { 
    build: { 
    options: { 
     baseUrl: './build/', 
     paths: { 
     'jquery': '../bower_components/jquery/dist/jquery.min', 
     'react': '../bower_components/react/react.min', 
     'react-dom': '../bower_components/react/react-dom.min' 
     }, 
     include: ['main'], 
     out: 'dist/library.min.js', 
     optimize: 'uglify2' 
    } 
    } 
} 

Main.js выглядит следующим образом:

define(['jquery', 'react', 'react-dom'], function($, React, ReactDOM) { 
    return { 
    react: React, 
    reactDOM: ReactDOM, 
    } 
}); 

После компиляции всего кода с помощью данной конфигурации я включить его в HTML-файл следующим образом:

<html> 
    <head> 
    <script src="../bower_components/requirejs/require.js"></script> 
    <script src="index.js"></script> 
    </head> 
    <body></body> 
</html> 

index.js является requirejs файл следующим образом:

requirejs.config({ 
    baseUrl: 'src', 
    paths: { 
    mylib: 'lib/dist/library.min.js' 
    } 
}); 

require(['mylib'], function(mylib) { 
    console.log(mylib); 
}); 

Ошибка я получаю при выполнении приведенного выше кода заключается в следующем:

require.js:1958 GET file:///D:/code/example/user/src/src/react-dom.js net::ERR_FILE_NOT_FOUND 
req.load @ require.js:1958 
load @ require.js:1682load @ require.js:832 
fetch @ require.js:822check @ require.js:854 
enable @ require.js:1173 
enable @ require.js:1554 
(anonymous function) @ require.js:1158 
(anonymous function) @ require.js:134 
each @ require.js:59enable @ require.js:1110 
init @ require.js:786(anonymous function) @ require.js:1457 

require.js:168 Uncaught Error: Script error for "react-dom"(…) 

Если удалить реагирующие-дом все, нагрузки плавно.

Я пробовал несколько вещей до сих пор, так как импортировал React в качестве прокладки, поэтому реакция реагирует на глобальный React var, но это не сработало.

Любая помощь будет оценена, спасибо заранее.

Update:Github repo with example code

Update 2: Через некоторое время отладки на среагировать-РОМ Lib и уменьшенная сценария я обнаружил, что основной метод получает выполняется до вызова «определить (» response-dom ') "в миниатюрном скрипте, поэтому проблема распутывается как« как заставить основной скрипт ждать, пока код, определяющий «реагирование», будет выполнен ».

+0

Вы рассматривали возможность использования минимального примера через GitHub? – prosti

+0

Спасибо за совет, я подготовлю минимальный пример как можно скорее. –

+0

Пример добавления Github. –

ответ

0

Похоже, что с новой версией React 15.4.1 (только что выпущенной вчера) эта проблема решена. Повторите попытку после обновления версии в вашем bower.json!