2017-03-29 3 views
2

依存関係としてプライベートレポを必要とするプロジェクトがあります。ですから、projectAはこれをpackage.jsonに"projectB": "user/repo"としています。これはうまくインストールされ、projectAのnode_modulesにリストされています。問題は、依存関係の関数が必要な場所にノードがスローされ、エラーが発生することです。エラーは"Cannot find module projectB"です。前述のように、projectBはnode_modulesにリストされています。 projectBの構造は次のとおりです。プライベートレポ依存関係がインストールされますが、「モジュールが見つかりません」

. 
├── README.md 
├── file1.js 
├── file2.js 
├── file3.js 
├── file4.js 
└── package.json 

これも独自のnode_modulesを持っていますが、それを残しました。さて、ここでfile1.jsがどのように見えるかです:"Cannot find module error"で結果を計算呼び出す

var calculate = require('projectB').file1.getResult; // I've tried this in several other ways too 

function getResult (a, b) { 
    return a + b; 
} 

module.exports = { getResult } 

そして、ここではPROJECTAがどのように見えるかです。依存関係として私用リポジトリを使用するための設定に根本的に間違ったやり方をしましたか、それとも間違っている必要がありますか?

更新ProjectBのはpackage.json

{ 
    "name": "projectB", 
    "version": "1.0.0", 
    "description": "Backend utility functions", 
    "scripts": { 
    "test": "mocha" 
    }, 
    "repository": { 
    "type": "git", 
    "url": "git+https://github.com/user/repo.git" 
    }, 
    "author": "Me", 
    "license": "ISC", 
    "bugs": { 
    "url": "https://github.com//user/repo/issues" 
    }, 
    "homepage": "https://github.com//user/repo#readme", 
    "dependencies": { 
    "lodash": "^4.17.4", 
    "mongodb": "^2.2.25", 
    "redis": "^2.7.1", 
    "winston": "^2.3.1" 
    } 
} 
+0

'projectB'の' package.json'はどのように見えますか? 'index.js'を持たない限り' main'を宣言する必要があります –

+0

ポストが更新されました。もしこれが単なるヘルパー関数であれば、main.jsのように見えますか? – jmcgui05

答えて

2

projectBが適切なmainを設定するように更新する必要がありますが、デフォルトでは、これはindex.jsになります。あなたは、次のような何かを行うことができ:

// projectB/index.js 
exports.file1 = require("./file1"); 
exports.file2 = require("./file2"); 
exports.file3 = require("./file3"); 
exports.file4 = require("./file4"); 

それは実際にはライブラリファイルからの輸出が、何もしませんindex.jsを持っているために、かなり一般的なパターンです。

+0

ありがとうございます。面白いことは、私はその方法から始めて、それが不必要なステップであると考えてそれを削除したということです。明らかにそうではありません! – jmcgui05