Issue
Проблема в том, что your code is not transpiled
, и поэтому он не должным образом распознается браузером и, следовательно, ошибки. По умолчанию create-реагировать-приложение не переносит node_modules .
Вы можете найти больше здесь в выпуске github https://github.com/facebook/create-react-app/issues/3889
В модуле узла нет ошибок, только проблема с транспиляцией.
Исправлено
После прохождения репо (https://github.com/prak-mtl/demo-to-publish), есть 2 возможных исправления, которые могут быть сделаны и перечислены ниже. Рекомендованным решением будет 2-е , но для этого потребуется, чтобы вы выполнили сборку, а затем опубликовали sh
Решение 1
. Для этого вам необходимо внести некоторые изменения в и CRA и npm репо. Вам необходимо добавить конфигурацию в конфигурацию babel , чтобы перенести указанный модуль узла c. Поскольку конфигурация CRA не может быть изменена (если вы не извлекли код), вам необходимо добавить дополнительную конфигурацию, используя опцию override
.
- Выполните этот шаг в демонстрационной версии sh repo
Внутри пакета. json пакета npm (т.е. https://github.com/prak-mtl/demo-to-publish/blob/master/package.json), вам нужно изменить основной путь, так как мы будем переносить код в новую папку lib
. Измените его на ./lib/src/index.js
и повторно напечатайте sh пакет.
- Выполните эти шаги в приложении CRA
- Создайте файл (
<any-name>.js
, здесь скажем babel_override.js
) - Добавьте следующий код в babel_override. js:
module.exports = {
overrides: [
{
test: ["./node_modules/demo-to-publish"],
presets: ["@babel/preset-react"]
}
]
}
Это будет использоваться для переноса кода внутри demo-to-publish
в папка node_modules в приложении CRA
Вы должны установить @babel/preset-react
. Если нет, установите его.
Удалите и переустановите пакет demo-to-publi sh в приложении CRA.
Перед запуском проект, код должен быть передан, поэтому выполните следующую команду в терминале
NODE_ENV=development ./node_modules/.bin/babel ./node_modules/demo-to-publish -d ./node_modules/demo-to-publish/lib --config-file ./babel_override.js
Решение 2 ( Рекомендуется )
Этот подход требует от вас собрать пакет npm. Поскольку у вас уже есть веб-пакет, это не должно быть проблемой. Следующие шаги необходимо выполнить в demo-to-publish
repo
- Добавить цель библиотеки как
commonjs2
в выходных данных. Конфигурация webpack будет выглядеть примерно так:
module.exports = {
entry: "./src/index.js",
output: {
filename: "index.js",
libraryTarget: 'commonjs2' //This one the most important line, others things will remain same
},
module: {
//Other code
}
};
Это будет использоваться для вывода сборки в папку dist
.
В пакете. json (
https://github.com/prak-mtl/demo-to-publish/blob/master/package.json) нам нужно обновить основной атрибут. Измените его значение с
./src/index.js
на
./dist/index.js
Запустите npm Запустите сборку в репозитории. Он должен
создать новую папку
dist
, содержащую один
index.js
файл внутри него Publi sh пакет npm сейчас
Затем, в приложении CRA установите пакет и работайте в обычном режиме. Это должно работать нормально.
Надеюсь, это поможет. Возврат для любых сомнений.