节点无法find模块(即使已安装)

我正在使用僵尸无头浏览器包编写CLI实用程序。

最初,我在本地安装了依赖关系,因为我需要它们npm install zombie foo bar ,而且脚本工作得很好。

但是,由于每次我尝试在本地安装或运行脚本时都会写入package.json,所以出现此模块错误:

 $ node index.js module.js:340 throw err; ^ Error: Cannot find module 'zombie' 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> (/Users/neal/Downloads/cpupdate-exp/index.js:2:15) 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) 

无论我如何尝试安装软件包,都会发生这种情况。 这是没有意义的。 我可以看到他们在我的本地node_modules目录&一切。

所以我想我的问题是,是我的package.json错了,或者我一直搞乱我的节点安装在某处?

顺便说一句,我也尝试安装僵尸新鲜在一个单独的目录和运行一个非常简单的脚本(下),但我得到相同的Cannot find module错误。

 var browser = require("zombie"); var assert = require("assert"); b = new browser(); b.visit("http://nealshyam.com/", function () { assert.ok(browser.success); console.log(browser.text("title")); }); 

的package.json:

 { "author": "Neal Shyam", "name": "cpupdate", "version": "0.1.1", "description": "Update your ChallengePost Portfolio with node.js", "homepage": "http://challengepost.com/software/cpupdate", "license": "MIT", "bugs":{ "url":"https://github.com/nealrs/cpupdate/issues", "email":"neal@challengepost.com" }, "repository": { "type": "git", "url": "git@github.com:nealrs/cpupdate.git" }, "bin": "./index.js", "keywords": [ "ChallengePost", "update", "portfolio" ], "dependencies": { "zombie": "assaf/zombie", "assert": "defunctzombie/commonjs-assert", "open": "pwnall/node-open", "colors": "Marak/colors.js", "nomnom": "harthur/nomnom" }, "preferGlobal": "true" } 

这可能是zombie包中的一个bug,你应该向上游报告: https : //github.com/assaf/zombie

这个错误的原因是,在npm install后, node_modules/zombie文件夹中缺less一些必要的文件。 即: lib文件夹在那里丢失。 zombiepackage.json指定入口点如下:

 "main": "lib/zombie", 

更改为node_modules/zombie并在其中运行npm install解决了这个问题,构build过程正确地创build了lib文件夹。

TimWolla的解决scheme并不适合我。 什么对我来说就是去到另一个文件夹,然后做npm install zombie@2.5.1 ,之后回到我的项目删除了node_modules文件夹,并再次为项目的npm install 。 lib文件夹被创build和僵尸工作。