2017-10-05 15 views
0

ノードモジュールを作成したため、正しく使用できないようです。モジュールを言った。ここは私のindex.jsです:自分自身のノードモジュールの使用方法

const thing = require('./thing.js'); 
exports.thing = thing; 

はここthing.jsです:

module.exports = 'foobar'; 

はここでpackage.jsonです:

{ 
    "name": "thing-both", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "ISC" 
} 

ここでpackage.jsonは私の他のモジュールにあります私はそれを使用したい:

{ 
    "name": "another-thing", 
    "description": "", 
    "dependencies": { 
    "thing-both": "file:../both" 
    }, 
    "private": true 
} 

私はnpm installを実行し、モジュールがインストールされます。 anotherThingモジュールで作成したモジュールを要求しようとすると、「モジュールが見つかりません」というエラーが表示されます。これは私の文必要がある:私は気づい

const thing = require('thing-both'); 

ことの一つは、インストールモジュールのファイルがありませんということで、フォルダが私のディレクトリのサイドバーにアイコンが表示されている(崇高3使用して、アイコンがシンボリックリンクのアイコンのように見える):

ここで

enter image description here

は、私が働いているプロジェクトのディレクトリです:私はここで間違って

both 
    thing.js 
    index.js 
    package.json 
other 
    // stuff 

は何をしているのかもしれませんか?

答えて

0

あなたのライブラリモジュールにnpm linkを使用して、ご使用のモジュールでnpm link MODULE_NAMEを使用してください。あなたのライブラリモジュールはおそらくnpm installがモジュールを探すnpmレジストリでホストされていないため、このエラーが発生しています。

これは、変更を加えてローカルでテストするたびにライブラリモジュールをnpmレジストリまでコミットすることなく、迅速なローカル開発を行う方法です。

+0

これは試しましたが、以前と同じエラーが発生しました。モジュールディレクトリ 'both'に' npm link'を実行し、モジュールディレクトリ 'other'に' npm link thing-both'を実行しました。私の端末がそうであると言っているので、リンクが正しくセットアップされたように見えます。おそらく、実際にノードモジュールを正しく作成していないのでしょうか? – skwny

+0

@skwnyコンシューマモジュールの 'node_modules'フォルダを見てください(私はそれが別のものだと思います)。ライブラリモジュールへのディレクトリ(またはシンボリックリンク)がありますか(私はあなたがそれを両方とも呼びます)?もし存在すれば、あなたは 'var thingBoth = require(" thing-both ");'でJS内のライブラリを要求する必要があります。 – zero298

+0

はい、そうです。私は 'const thingBoth = require( 'thing-both')'を経由していますが、呼び出しモジュールのnode_modulesフォルダ(アイコンとしてシンボリックリンクを持っているようです)にディレクトリを持っています。しかし、私がディレクトリ 'thing-both'を呼び出しモジュールのnode_modulesフォルダに展開すると、元の質問に示されているように何も表示されないことに注意してください。 – skwny

関連する問題