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

nea*_*lrs 5 node.js npm

我正在使用僵尸无头浏览器包编写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)
Run Code Online (Sandbox Code Playgroud)

无论我如何尝试安装软件包,都会发生这种情况。这没有任何意义。我可以在我的本地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"));
});
Run Code Online (Sandbox Code Playgroud)

包.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"
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*lla 5

zombie这可能是您应该向上游报告的包中的错误: https://github.com/assaf/zombie

出现此错误的原因是文件夹npm install中缺少一些必要的文件node_modules/zombie。即:该lib文件夹丢失了。of指定入口点package.jsonzombie如下所示:

"main": "lib/zombie",
Run Code Online (Sandbox Code Playgroud)

更改为node_modules/zombienpm install在那里运行修复了问题,构建过程正确创建了lib文件夹。