реагировать на родную сеть, __DEV__ не определено

Если вы хотите совместно использовать код между RN и RN-web, __DEV__ также должен быть предоставлен на обеих платформах.

Однако я не могу добавить DEV с помощью const __DEV__ = process.env.NODE_ENV !== 'production'; new webpack.DefinePlugin({__DEV__})

Я могу установить window.__DEV__ в порядке, но код RN использует __DEV__

Я также пытался добавить module:metro-react-native-babel-preset

Я видел React Native - __DEV__ не определен

/* global __DEV__ */ работает, но надеюсь, что есть способ исправить это, не изменяя весь исходный код, который использует __DEV__


person eugene    schedule 09.04.2020    source источник


Ответы (2)


в свой webpack.config.js добавьте это:

  plugins: [
    // `process.env.NODE_ENV === 'production'` must be `true` for production
    // builds to eliminate development checks and reduce build size. You may
    // wish to include additional optimizations.
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
      __DEV__: process.env.NODE_ENV === 'production' || true,
    }),
  ],

см. https://medium.com/@alexander.forselius/experiment-combining-native-web-ios-android-and-macos-development-in-rectnative-part-1-ecd5887e9cfc

person KingAmo    schedule 10.06.2020

Я решил это, заставив его зависеть от ввода режима веб-пакета.

In webpack.config.js:

const config = {
  ...
  plugins: [],
  ...
}

module.exports = (env, argv) => {
  config.plugins.push(new webpack.DefinePlugin({
    __DEV__: JSON.stringify(argv.mode !== 'production'),
  }));

  return config;
};
person user3087615    schedule 26.03.2021