2014-10-16 59 views
1

我是一个有nodejs的新手。未找到nodejs中的zepto模块

我安装了全球模块仄和jsdom:

npm install jsdom -g 
npm install zepto -g 

npm list -g检查。这些模块已安装。

但是,当我在使用脚本中引用这两个模块需要:

var jsdom = require("jsdom"); 
var Zepto = require("zepto"); 

我得到一个错误信息:

Error: Cannot find module 'zepto' 
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> (/home/user554/dev/exchange/bin/getExchangeData.js:6:13) 
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) 

我只有jsdom只有仄尝试。只有Zepto失败。

我错过了什么?感谢您的帮助。

+2

要'require()'模块,请在本地安装它(http://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders)。全局包仅用于从命令行中使用。如果您需要两种用途,则必须在两个位置安装它。文档:['npm-folders'](https://www.npmjs.org/doc/files/npm-folders.html)。 – 2014-10-16 17:46:08

+0

谢谢,但它似乎不符合我的需要。我想在具有相同模块的许多脚本中使用node.js。所以维护相同文件的许多副本是疯狂的。 – 2014-10-16 17:50:15

+0

本地化安装通常用于整个模块的版本依赖关系。 NPM仅在给定路径中安装一个模块版本。通过在每个应用程序中使用全局模块,您可能需要一次修改所有应用程序以支持更新模块,或者即使只是不支持更新也不得不拖延。 – 2014-10-16 18:08:58

回答

1

zepto软件包不是一个合适的Node软件包。它安装了一个缩小版本的Zepto库,但它看起来像是用于浏览器的使用(为什么它会在NPM存储库中?我不知道)。

请改为使用zepto-node包。

+0

只是为了满足我的好奇心,你怎么知道它不是一个合适的节点包? – 2014-10-16 17:46:15

+0

谢谢你的帮助。它工作正常! – 2014-10-16 17:47:15

+0

因为它没有加载;)但更严重的是:'package.json'文件没有'main'属性,用于指向当你需要一个模块时加载的入口点。 – robertklep 2014-10-16 17:48:24

0

这里真正的问题是,您在全球安装。使用-g进行安装仅适用于提供某种命令行脚本的模块(例如,express-generator提供了可在shell提示符下使用的express命令)。

通常你安装的模块没有-g,它会在本地安装,你可以require()它就好了。但是,正如@robertklep所指出的那样,zepto模块当前是does not export anything(在package.json中缺少“lib”),所以在本地安装对该特定模块无效。

+0

他可以加载'jsdom'(这也是*全球安装)就好了,所以这不是问题。在本地安装'zepto'包也不能解决问题。 – robertklep 2014-10-16 17:51:32

+0

谢谢你的回答,但它不适合我的需要在本地安装。许多具有相同模块的脚本。这就是为什么我使用全局安装的模块和NODE_PATH。 – 2014-10-16 17:53:43

+0

关于'jsdom',我的猜测是他们之前安装时没有'-g',或者他们使用'npm link',他们在原始问题中都没有共享。 – mscdex 2014-10-16 17:54:06