如何在我的主项目中使用我的私有 npm 包
How to use my private npm package in my main project
我正在创建私人 npm 并在 this
的帮助下使用 sinopia 将其发布到我的本地 npm 存储库
.storage 树在
下面
C:\sinopia
\ storage
\privateProj
package.json
privateProj1.0.1.taz
我的主要项目位置我是运行以下命令
npm install privateProj --save
会更新package.json如下
{
"name": "privateprojectClient",
"version": "1.0.0",
"description": "",
"main": "myApp.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"privateProj": "^1.0.1"
}
}
然后将privateProj下载到nodemodule文件夹reffer following imag
然后我尝试 运行 节点 myapp.js
它显示以下消息
I:\NodeJSProject\privateprojectClient>node myApp.js
module.js:340
throw err;
^
Error: Cannot find module '/node_modules/privateProj'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (I:\NodeJSProject\privateprojectClient\myApp.js:5:10)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
privatePro/app.js中的代码为
var db = require('diskdb');
db.connect('./examples/db', ['articles','comments','users']);
var article1 = {
title : 'diskDB rocks',
published : 'today',
rating : '5 stars'
}
var article2 = {
title : 'diskDB rocks',
published : 'yesterday',
rating : '5 stars'
}
var article3 = {
title : 'diskDB rocks',
published : 'today',
rating : '4 stars'
}
db.articles.save([article1, article2, article3]);
var articleComments = {
title: 'diskDB rocks',
published: '2 days ago',
comments: [{
name: 'a user',
comment: 'this is cool',
rating: 2
}, {
name: 'b user',
comment: 'this is ratchet',
rating: 3
}, {
name: 'c user',
comment: 'this is awesome',
rating: 2
}]
}
db.comments.save(articleComments);
var printFruits = function() {
console.log(db.articles.find());
}
// To test the app locally
//npm publishprintFruits(); // << uncomment this
// and run
// $ node app.js
exports.printFruits = printFruits;
节点"require"函数默认会在node_modules中查找,试试
require('privateProj');
并将 node_modules/privateProj/app.js 重命名为 node_modules/privateProj/index.js
同时更改您的模块代码(privateProj 代码):
exports.printFruits = printFruits;
到
module.exports = printFruits;
还刚刚注意到您正在导出函数,在您的 myApp.js 更改中
pp.printFruits();
只是
pp();
首先 - 你不需要设置 npm 模块的完整路径,你可以只需要 ('moduleName').
第二(也是你的主要问题)——你设置了绝对路径,这就是你的脚本找不到它的原因。
所以只使用 require(moduleName)
(可选)阅读更多关于 require 如何工作的信息 here
我正在创建私人 npm 并在 this
的帮助下使用 sinopia 将其发布到我的本地 npm 存储库.storage 树在
下面C:\sinopia
\ storage
\privateProj
package.json
privateProj1.0.1.taz
我的主要项目位置我是运行以下命令
npm install privateProj --save
会更新package.json如下
{
"name": "privateprojectClient",
"version": "1.0.0",
"description": "",
"main": "myApp.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"privateProj": "^1.0.1"
}
}
然后将privateProj下载到nodemodule文件夹reffer following imag
I:\NodeJSProject\privateprojectClient>node myApp.js
module.js:340
throw err;
^
Error: Cannot find module '/node_modules/privateProj'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (I:\NodeJSProject\privateprojectClient\myApp.js:5:10)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
privatePro/app.js中的代码为
var db = require('diskdb');
db.connect('./examples/db', ['articles','comments','users']);
var article1 = {
title : 'diskDB rocks',
published : 'today',
rating : '5 stars'
}
var article2 = {
title : 'diskDB rocks',
published : 'yesterday',
rating : '5 stars'
}
var article3 = {
title : 'diskDB rocks',
published : 'today',
rating : '4 stars'
}
db.articles.save([article1, article2, article3]);
var articleComments = {
title: 'diskDB rocks',
published: '2 days ago',
comments: [{
name: 'a user',
comment: 'this is cool',
rating: 2
}, {
name: 'b user',
comment: 'this is ratchet',
rating: 3
}, {
name: 'c user',
comment: 'this is awesome',
rating: 2
}]
}
db.comments.save(articleComments);
var printFruits = function() {
console.log(db.articles.find());
}
// To test the app locally
//npm publishprintFruits(); // << uncomment this
// and run
// $ node app.js
exports.printFruits = printFruits;
节点"require"函数默认会在node_modules中查找,试试
require('privateProj');
并将 node_modules/privateProj/app.js 重命名为 node_modules/privateProj/index.js
同时更改您的模块代码(privateProj 代码):
exports.printFruits = printFruits;
到
module.exports = printFruits;
还刚刚注意到您正在导出函数,在您的 myApp.js 更改中
pp.printFruits();
只是
pp();
首先 - 你不需要设置 npm 模块的完整路径,你可以只需要 ('moduleName').
第二(也是你的主要问题)——你设置了绝对路径,这就是你的脚本找不到它的原因。
所以只使用 require(moduleName)
(可选)阅读更多关于 require 如何工作的信息 here