2 votes

react native web, __DEV__ non défini

Si vous voulez partager le code entre RN et RN-web, __DEV__ doit également être fournie dans les deux plateformes.

Cependant, je ne peux pas ajouter DEV en utilisant const __DEV__ = process.env.NODE_ENV !== 'production'; new webpack.DefinePlugin({__DEV__})

Je peux mettre window.__DEV__ bien, mais le code RN utilise __DEV__

J'ai également essayé d'ajouter module:metro-react-native-babel-preset

J'ai vu React Native - __DEV__ n'est pas défini

/* global __DEV__ */ fonctionne, mais j'espère qu'il y a un moyen de le corriger sans modifier toutes les sources qui utilisent __DEV__

2voto

KingAmo Points 85

Dans votre webpack.config.js ajoutez ceci :

  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,
    }),
  ],

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

0voto

user3087615 Points 77

Je l'ai résolu en le faisant dépendre de l'entrée du mode webpack.

En webpack.config.js :

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

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

  return config;
};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X