2017-10-05 61 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註冊表,這是npm install查找模塊。

這是一種快速進行本地開發的方法,無需在每次進行更改並想在本地進行測試時將庫模塊一直提交到npm註冊表。

+0

給它一個嘗試,但仍然遇到像以前一樣的錯誤。我在我的模塊目錄'both'中運行'npm link',然後在我的模塊目錄'other'中運行'npm link thing-both'。它看起來像鏈接設置正確,因爲我的終端是這樣說的。也許我沒有正確創建節點模塊? – skwny

+0

@skwny查看消費者模塊的'node_modules'文件夾(我認爲這是「另一件事」)。是否有一個目錄(或符號鏈接)庫模塊(我認爲你稱它爲「東西 - 都」)?如果有的話,你需要用'var thingBoth = require(「thing-both」);'來要求JS中的庫。 – zero298

+0

是的,情況正是如此。我在調用模塊的node_modules文件夾中有一個目錄(它似乎有一個符號鏈接作爲圖標),並且在我的調用模塊中我需要它,儘管它是通過'const thingBoth = require('thing-both')'。但請注意,當我在調用模塊的node_modules文件夾中展開目錄'thing-both'時,沒有顯示原始問題中顯示的內容。 – skwny