Node无法找到模块(即使已安装)

9
我正在使用头部浏览器包zombie编写一个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有问题还是我在某个地方搞乱了node的安装?
顺便说一下,我还尝试在另一个目录中安装zombie fresh并运行一个非常简单的脚本(如下),但我仍然遇到相同的“找不到模块”错误。
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"
}
2个回答

5
这可能是“zombie”软件包中的一个错误,您应该向上游报告:https://github.com/assaf/zombie
这个错误的原因是,在npm install之后,node_modules / zombie文件夹中缺少一些必要的文件,即缺少lib文件夹。 “zombie”的package.json将入口点指定如下:
"main": "lib/zombie",

进入node_modules/zombie目录,然后执行npm install命令可以解决这个问题,构建过程会正确地创建lib文件夹。


哇 - 好的,所以我不是疯了。谢谢!! - nealrs

0

TimWolla的解决方案对我没有用。对我有用的是去另一个文件夹并执行 npm install zombie@2.5.1,然后回到我的项目中删除node_modules文件夹并再次为该项目执行npm install。lib文件夹被创建并且zombie起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接