2016-10-20 1 views
1

ローカルのカスタムモジュールnode_modulesの中に、その親の持つreactパッケージへのアクセス権がありません。ローカルのnpm依存関係を追加するときにリアクションモジュールが見つかりません

私は、次のコードを持っている:私はnpm link編されているとreact-native-my-super-componentsと呼ばれているディレクトリを持って

// SomeComponent.js 
import React, { Component } from 'react' 
import { 
    View 
} from 'react-native' 
import CustomComponent from 'react-native-my-super-components' 

export default SomeComponent extends Component { 
    render() { 
    return (
     <View> 
     <CustomComponent /> 
     </View> 
    ) 
    } 
} 

を。

// index.js of 'react-native-my-super-components' 
import React, { Component } from 'react' 
import { 
    Text, 
    View, 
} from 'react-native' 

export default SomeComponent extends Component { 
    render() { 
    return (
     <View> 
     <Text>SomeComponent</Text> 
     </View> 
    ) 
    } 
} 

私はSomeComponent.jsを含む私のプロジェクトでnpm link react-native-my-super-componentと呼ばれています。

それはpackage.jsonだが、次のようになります

{ 
    "name": "react-native-my-super-component", 
    "version": "0.0.1", 
    "description": "My Super Component", 
    "main": "index.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "Naoto Ida", 
    "license": "MIT", 
    "peerDependencies": { 
    "react": ">=15.3.2", 
    "react-native": ">=0.35.0" 
    } 
} 

は、私は他のnode_modulesと比べてどんな違いが表示されません。これを引き起こす原因は何ですか?

答えて

1

reactreact-native-my-super-componentから解決する場合、nodeはreact-native-my-super-componentフォルダーまたはreact-native-my-super-component parentsからnode_modulesを検索します。

npm linkを使用している場合と同じ方法でモジュール解決システムを動作させることはできません。

だから、あなたがすることができます

  • はシングルトンでなければなりませんreact-native-my-super-componentフォルダリアクトため
  • の「DEV依存性」として必要な不足している依存関係をインストールし、あなたがあなたのWebPACKの設定ファイルにエイリアスを作成する必要がありますリンクされたすべてのモジュールから同じ方法で「反応」を解決します。あなたが設定ファイルをWebPACKの中で

例えば、DEVモードで追加します。

{ 
     resolve: { 
      alias: [ 
       'react': path.join(process.cwd(), 'node_modules/react') 
      ] 
     } 
    } 

このソリューションは、モジュール反応するあなたへの絶対パスを作成するために、モジュールのパス」を必要とします(import path from 'path';を)しかし、あなたのことが可能にまず静的なパスを試してみてください。

+0

お返事ありがとうございます。だから、もし私が 'remote-my-super-component'をリモートリポジトリにプッシュできたら、' npm install'だけすればいいのですか?私はES6から古いJSに移る前にwebpackを使用しましたが、この種のプロジェクトではそれほど多くはありません。 –

+0

はい。 'npm link'を使って、自分のdevプロセスが動作しているときに、' react-native-my-super-component'であなたのメインプロジェクトを動作させることができます。それから、prodで、または 'react-native-my-super-component'がリモートリポジトリにプッシュされたら、' npm install react-native-my-super-component'を使用してください。 –

関連する問題