2017-04-17 13 views
0

私はprocess.env.BROWSER === trueのif文でヒットしたコンソールで証明されていますが、if文内のrequireはprocess.env.BROWSER === trueまたはprocess.env.BROWSER === falseの場合はまだヒットしていますこれは私がすべては何とかJSがコンパイルされたときに呼ばれている必要があることを疑う。私がコメントアウトした場合はエラーがないときprocess.env.BROWSER === falseまず、必要としている。原因とエラーprocess.env.BROWSER === false条件付きでjavascriptのモジュールを必要とする

ですが、その場合はどのように条件付きで私はできモジュールが必要ですか?ここでは何が起こっていますか?

if (process.env.BROWSER) { 
    language['ES'].push(require('promise?global,locale-es-ES!react-intl/locale-data/es')); 
} else{ 
    language['ES'].push(function() { 
     return Promise.resolve(require('react-intl/locale-data/es')); 
    }); 
} 

これがで反応し、ネイティブに動作しますが、ブラウザで次のようにモジュールへの参照を見つけようと

if (process.env.BROWSER) { 
    language['ES'].push(module.require('promise?global,locale-es-ES!react-intl/locale-data/es')); 
} else{ 
    language['ES'].push(function() { 
     return Promise.resolve(require('react-intl/locale-data/es')); 
    }); 
} 

は私が持っていたTypeError: Cannot read property 'require' of undefined

if (process.env.BROWSER) { 
     language['ES'].push(require('react-intl').module.require('promise?global,locale-es-ES!react-intl/locale-data/es')); 
    } else{ 
     language['ES'].push(function() { 
      return Promise.resolve(require('react-intl/locale-data/es')); 
     }); 
    } 

答えて

0

を与えるときTypeError: module.require is not a functionを投げるようmodule.requireを使用して上記と同じですが、nodejsと同じ問題に直面し、ネイティブに反応します。

nodejsモジュールにmodule.require()を使用してこの問題を解決しました。あなたのケースでこれを行うことができれば試してみてください(ブラウザの場合は直接requireを避けるようにしてください)。

リアクションネイティブでは条件付き要求が許可されません。静的解析はすべて前に必要です。

+0

ありがとうございました!反応ネイティブでもこのエラーが発生しています。しかし、module.require()を使うためのように見えますが、react-intlから 'module'を明示的にエクスポートする必要があります。それはあなたがしなければならないことですか? https://nodejs.org/api/modules.html#modules_module_require_id – Turnipdabeets

+0

私が意味していたのは、他の環境にはreact-nativeとmodule.requireのrequireを使用することでした。私にとってnodejsは私に条件付きの要求をすることを許可しましたが、反応ネイティブだけがそれを妨げていました。 –

+0

TypeErrorを取得せずにmodule.requireをどのように使用しましたか?module.requireは関数ではありません – Turnipdabeets

関連する問題