У нас есть устаревшее приложение Backbone, которое мы переходим на React. Промежуточный шаг, который мы пытаемся выполнить, - это загрузить связанный модуль Backbone на страницу React, пока у нас не будет времени полностью его переписать. Я на полпути, я могу связать приложение и все его зависимости с r. js, используя такую конфигурацию:
({
...
baseUrl: './',
name: 'myapp',
paths: {
'myapp': './legacy/app'
},
out: 'src/appbuilt.js'
...
})
Модуль настроен следующим образом:
define(function(require) {
var $ = require('jquery'),
_ = require('underscore'),
...
templates = $(require('text!templates/app.html')),
app = {};
app.View = .....
app.Model = .....
return app;
});
Этот пакет работает на стороне Backbone. Затем мне нужно превратить это во что-то, что я могу импортировать в React и визуализировать. Я пробую такие вещи:
npx babel src/appbuilt.js --out-file src/appbuilt.es6.js --plugins=@babel/transform-modules-umd
Что дает мне модуль UMD, но импортирует его следующим образом:
import * as legacyapp from '../../appbuilt.es6';
Выдает мне предупреждения о сборке, например:
Критическая зависимость: функция require используется таким образом, что зависимости не могут быть извлечены статически
И ошибки при загрузке страницы это, вероятно, симптомы чего-то:
Uncaught TypeError: name.split не является функцией
Каков секретный соус для преобразования моего модуля во что-то, что я могу использовать ? Я открыт для изменения того, как приложение Backbone выполняет импорт, или создания какой-либо оболочки, более легко переводимой.