Я пытаюсь создать проект React Native Web.
Ранее я создал несколько приложений React Native, но никогда не пытался разместить их в Интернете.
Моя самая большая проблема связана с была несовместимость нативных библиотек при запуске Интернета - не неожиданная проблема.
В любом случае, моя цель состоит в том, чтобы иметь возможность загружать нативные библиотеки на нативной платформе и иметь альтернативные библиотеки, делающие то же самое в вебе .
Например, я получаю текущую ошибку:
./node_modules/react-native-calendars/src/expandableCalendar/asCalendarConsumer.js
Module parse failed: Unexpected token (11:8)
You may need an appropriate loader to handle this file type.
| render() {
| return (
| <CalendarContext.Consumer>
| {(context) => (
| <WrappedComponent
Как бы это исправить? Эта библиотека теоретически совместима с React Native Web, и все же я получаю вышеуказанную ошибку.
Будет ли этот загрузчик находиться в Babel? Метро? Webpack?
У меня есть babel.config. js, который выглядит так:
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
resolve: {
alias: {
'react-native$': 'react-native-web'
}
},
rules: [
{
test: /\.(js|jsx|mjs)$/,
include: [
paths.src,
// In order to use react-native targetted libraries on web,
// we have to use babel to compile them from ES6 to ES5.
// This would still not allow us to use libraries that have RN
// dependencies that are not polyfilled by react-native-web.
path.resolve(paths.nodeModules, 'react-native-vector-icons'),
],
loader: 'babel-loader',
options: {
compact: true,
presets: ['react-native'],
},
}
]
};
У меня есть метро, которое выглядит так:
const { getDefaultConfig } = require("metro-config");
module.exports = (async () => {
const {
resolver: { sourceExts }
} = await getDefaultConfig();
return {
transformer: {
babelTransformerPath: require.resolve("react-native-css-transformer")
},
resolver: {
sourceExts: [...sourceExts, "css"]
}
};
})();
А вот мой веб-пакет:
// webpack.config.js
module.exports = {
plugins: ["@babel/plugin-syntax-dynamic-import"],
resolve: {
alias: {
'react-native$': 'react-native-web'
},
},
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
//exclude: /node_modules/,
options: {
presets: ['es2015', 'stage-0', 'react', 'babel-preset-env', 'babel-preset-stage-0'],
plugins: ["@babel/plugin-syntax-dynamic-import"],
}
},
{
test: /\.ttf$/,
loader: "url-loader", // or directly file-loader
include: path.resolve(__dirname, "node_modules/react-native-vector-icons"),
},
]
}
Я действительно совершенно заблудился о том, как настроить веб-пакет или как я должен использовать эти файлы, чтобы избавиться от вышеуказанной ошибки.
Куда добавить загрузчик, о котором спрашивает ошибка?
Извините, если это запутанный вопрос - эта часть RN для меня совершенно новая