节点无法找到模块(即使已安装)
node is unable to find module (even though it's installed)
我正在编写一个 CLI utility using the zombie 无头浏览器包。
最初,我根据需要在本地安装了依赖项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 是错误的还是我在某个地方弄乱了我的节点安装?
顺便说一句,我也尝试在一个单独的目录中安装 zombie fresh 并 运行ning 一个非常简单的脚本(如下),但我得到了相同的 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
包中的错误,您应该向上游报告:https://github.com/assaf/zombie
出现此错误的原因是npm install
后node_modules/zombie
文件夹中缺少一些必要的文件。即:那里缺少 lib
文件夹。 zombie
的package.json
指定入口点如下:
"main": "lib/zombie",
更改为 node_modules/zombie
和 运行 npm install
解决了问题,构建过程正确创建了 lib
文件夹。
TimWolla 的解决方案对我不起作用。对我有用的是转到另一个文件夹并执行 npm install zombie@2.5.1
,然后返回我的项目删除 node_modules 文件夹并再次为该项目执行 npm install
。 lib 文件夹已创建并且 zombie 工作。
我正在编写一个 CLI utility using the zombie 无头浏览器包。
最初,我根据需要在本地安装了依赖项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 是错误的还是我在某个地方弄乱了我的节点安装?
顺便说一句,我也尝试在一个单独的目录中安装 zombie fresh 并 运行ning 一个非常简单的脚本(如下),但我得到了相同的 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
包中的错误,您应该向上游报告:https://github.com/assaf/zombie
出现此错误的原因是npm install
后node_modules/zombie
文件夹中缺少一些必要的文件。即:那里缺少 lib
文件夹。 zombie
的package.json
指定入口点如下:
"main": "lib/zombie",
更改为 node_modules/zombie
和 运行 npm install
解决了问题,构建过程正确创建了 lib
文件夹。
TimWolla 的解决方案对我不起作用。对我有用的是转到另一个文件夹并执行 npm install zombie@2.5.1
,然后返回我的项目删除 node_modules 文件夹并再次为该项目执行 npm install
。 lib 文件夹已创建并且 zombie 工作。