2016-04-05 15 views
6

çözmek için ve ben dosyama proje alışkanlık yük bunu gerektirir ve aşağıdaki hatayı görüyorum zaman:Twilio Yerli Tepki - edilemiyor modül kripto benim tepki yerli projeye <code>twilio</code> paketini uygulama üzerinde çalışıyorum

Unable to resolve module crypto from /Users/[myname]/Documents/Projects/React-Native/[app-name]/node_modules/twilio/lib/webhooks.js: Unable to find this module in its module map or any of the node_modules directories under /Users/node_modules/crypto and its parent directories

doğrudan crypto paketi yüklemeden denedim ve bu da işe görünmüyor.

kimse bu sorunu yaşadı Has ve bunu çözmek için bir yol vardır?

cevap

3

O Twilio Bunlardan biri olan, yani Yerli bağımlılıkları dayalı bazı paketler kabul etmiyor Tepki görünüyor.

Doğrudan bir çözüm olmasa da, Twilio çağrısını yapmak için ayrı bir Express sunucusu oluşturarak ve bu yolu benim Reaktif Yerleşik uygulamasından çağırarak, bu konuyla ilgili bir çalışma oluşturdum.

2

Sana hiçbiri herkes için düzeltmek gibi görünüyor, çünkü çözümleri bol verilir, bir göz there olduğu ileri sürüldü.

Sana (bağlantısından sayısından alınmıştır) aşağıdakileri deneyin öneririz:

  1. rm -rf node_modules
  2. rm -fr $TMPDIR/react-*
  3. watchman watch-del-all
  4. npm cache clean && npm install
  5. npm start from ./node_modules/react-native

Ama bütünselliğe sorunu göz atın birçok onlar için çalışan diğer düzeltmeleri bulundu.

+0

Bu öneriler için teşekkürler! – Onaracs

10

rn-nodeify modülünü, tepki düzeyine göre crypto almak için kullanabilirsiniz.

package.json yılında senin devDependencies için rn-nodeify ekleyin:

"scripts": { 
    … 
    "postinstall": "node_modules/.bin/rn-nodeify --install crypto --hack" 
} 

m-nodeify sizin package.json değiştirir unutmayın:

"devDependencies": { 
    "rn-nodeify": "^6.0.1" 
} 

aynı dosyanın scripts bölümüne ekleyin . Mevcut burada

fazla bilgi: https://www.npmjs.com/package/rn-nodeify

+0

Bu kesmenin kaynağını okuduğunuzdan emin olun -> Iirc, rng'yi oldukça güvensiz yapar, bu yüzden bununla iyi geçinmeniz gerekir. – aegbert

+0

ReactNativify, rn-nodeify için daha temiz bir alternatif için şu cevaba bakın: [Yerel ortamdaki bilinmeyen modül “kripto” gerekli) (https://stackoverflow.com/a/45304528/8295283) –

0

Yerli paketleyicisine tepki başlık altında Babil kullanır. Bu ikincisi senin node_modules yüklü olduğunu varsayarak, require('crypto-browserify') tüm require('crypto') çağrıları yeniden yazmak babel-plugin-rewrite-require Babel plugin kullanabileceği anlamına gelir.

Ocak 2016 itibariyle, isteğe bağlı yapılandırmayı tanımlamak için .babelrc dosyasını kullanabilirsiniz, böylece bu gerçekten çok kolay hale gelir.

npm install --save crypto-browserify 
npm install --save-dev babel-plugin-rewrite-require 

Sonra .babelrc dosyaya konfigürasyon dosyasında eklentileri ekleyin::

{ 
    "presets": ["react-native"], 
    "plugins": [ 
    ["babel-plugin-rewrite-require", { 
     aliases: { 
     crypto: 'crypto-browserify' 
     } 
    }] 
    ] 
} 

Yeniden paketleyicisine ve işte bu olmalı Birincisi, bağımlılıklarını yükleyin.

Bu, ReactNativify'un kullandığı aynı yaklaşımdır; burada özel trafo tanımlamak yerine .babelrc kullanın. ReactNativify yazıldığında, desteklenmedi, bu yüzden daha karmaşık bir çözüm ile gitmek zorunda kaldılar. Nod polifonlarının neredeyse tam listesi için bkz. this file from ReactNativify.