提前感谢我能得到的任何帮助。
我正在尝试在我的 mac OSX 10.8 终端中使用 nodejs 和 NPM 安装 grunt、bower 和 yeoman 等软件包。
我检查了 node 和 NPM 的版本以确认它们安装正确并且发现是真的。但是,当我开始运行命令来安装像 bower 这样的包时,使用以下命令:
npm install -g bower
我遇到了各种各样的错误。我试图避免使用 sudo 命令。我尝试使用 sudo,但之后我会收到“找不到命令”的响应。我感觉这些包可能不在正确的文件夹或目录中,但我不清楚下一步该做什么。
供您参考,这些是我得到的错误:
npm ERR! Error: EACCES, unlink '/Users/myname/.node/lib/node_modules/bower/.editorconfig'
npm ERR! { [Error: EACCES, unlink '/Users/myname/.node/lib/node_modules/bower/.editorconfig']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/Users/myname/.node/lib/node_modules/bower/.editorconfig' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Darwin 12.5.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "bower"
npm ERR! cwd /Users/myname
npm ERR! node -v v0.10.32
npm ERR! npm -v 1.4.28
npm ERR! path /Users/myname/.node/lib/node_modules/bower/.editorconfig
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, unlink '/Users/myname/.node/lib/node_modules/bower/.editorconfig'
npm ERR! error rolling back Error: EACCES, unlink '/Users/myname/.node/lib/node_modules/bower /.editorconfig'
npm ERR! error rolling back { [Error: EACCES, unlink '/Users/myname/.node/lib/node_modules/bower/.editorconfig']
npm ERR! error rolling back errno: 3,
npm ERR! error rolling back code: 'EACCES',
npm ERR! error rolling back path: '/Users/myname/.node/lib/node_modules/bower/.editorconfig' }
npm ERR! not ok code 0
为了隐私,我用路径中的代理 myname 替换了我自己的名字。此外,当我尝试安装 grunt 和 yeoman 时,这个问题仍然存在。
经过进一步检查,我注意到我有两个文件夹。一个名为“用户”,一个名为“usr”。在“用户”中,我看到一个名为 node_modules 的文件夹。但是,在 'usr/local/lib/node_modules/npm/node_modules' 中,我注意到没有 bower、grunt 或 yeoman 文件。这只是推测,但文件是否没有正确安装到必要的文件夹中以便它们在 npm 中运行?
任何帮助或输入将不胜感激!
2014 年 10 月 10 日更新
供大家参考,我试过sudo命令看看能不能用,显示如下:
/Users/myname/.node/bin/bower -> /Users/myname/.node/lib/node_modules/bower/bin/bower
bower@1.3.12 /Users/myname/.node/lib/node_modules/bower
├── is-root@1.0.0
├── junk@1.0.0
├── stringify-object@1.0.0
├── abbrev@1.0.5
├── chmodr@0.1.0
├── which@1.0.5
├── osenv@0.1.0
├── opn@1.0.0
├── archy@0.0.2
├── rimraf@2.2.8
├── graceful-fs@3.0.3
├── bower-logger@0.2.2
├── lru-cache@2.5.0
├── bower-endpoint-parser@0.2.2
├── lockfile@1.0.0
├── nopt@3.0.1
├── retry@0.6.0
├── tmp@0.0.23
├── q@1.0.1
├── semver@2.3.2
├── p-throttler@0.1.0 (q@0.9.7)
├── request-progress@0.3.0 (throttleit@0.0.2)
├── bower-json@0.4.0 (intersect@0.0.3, deep-extend@0.2.11, graceful-fs@2.0.3)
├── fstream@1.0.2 (inherits@2.0.1)
├── shell-quote@1.4.2 (array-filter@0.0.1, array-reduce@0.0.0, array-map@0.0.0, jsonify@0.0.0)
├── mkdirp@0.5.0 (minimist@0.0.8)
├── promptly@0.2.0 (read@1.0.5)
├── fstream-ignore@1.0.1 (inherits@2.0.1, minimatch@1.0.0)
├── chalk@0.5.0 (escape-string-regexp@1.0.2, ansi-styles@1.1.0, supports-color@0.2.0, strip- ansi@0.3.0, has-ansi@0.1.0)
├── bower-config@0.5.2 (osenv@0.0.3, graceful-fs@2.0.3, optimist@0.6.1)
├── glob@4.0.6 (inherits@2.0.1, minimatch@1.0.0, once@1.3.1)
├── tar-fs@0.5.2 (pump@0.3.5, tar-stream@0.4.7)
├── decompress-zip@0.0.8 (nopt@2.2.1, mkpath@0.1.0, touch@0.0.2, readable-stream@1.1.13, binary@0.3.0)
├── request@2.42.0 (caseless@0.6.0, json-stringify-safe@5.0.0, aws-sign2@0.5.0, forever-agent@0.5.2, stringstream@0.0.4, oauth-sign@0.4.0, tunnel-agent@0.4.0, node-uuid@1.4.1, qs@1.2.2, mime-types@1.0.2, bl@0.9.3, form-data@0.1.4, tough-cookie@0.12.1, http-signature@0.10.0, hawk@1.1.1)
├── mout@0.9.1
├── cardinal@0.4.0 (redeyed@0.4.4)
├── bower-registry-client@0.2.1 (graceful-fs@2.0.3, request-replay@0.2.0, lru-cache@2.3.1, async@0.2.10, mkdirp@0.3.5, request@2.27.0)
├── update-notifier@0.2.0 (semver-diff@0.1.0, string-length@0.1.2, latest-version@0.2.0, configstore@0.3.1)
├── inquirer@0.7.1 (figures@1.3.3, mute-stream@0.0.4, through@2.3.6, readline2@0.1.0, lodash@2.4.1, rx@2.3.12, cli-color@0.3.2)
├── handlebars@2.0.0 (optimist@0.3.7, uglify-js@2.3.6)
└── insight@0.4.3 (object-assign@1.0.0, async@0.9.0, chalk@0.5.1, os-name@1.0.1, lodash.debounce@2.4.1, tough-cookie@0.12.1, configstore@0.3.1, inquirer@0.6.0)
================================= 但是,以上不是正确的解决方案。当我尝试通过键入 bower -v 或 bower --version 或任何其他 bower 命令来检查是否安装了 bower 时,我得到“找不到命令”。到底是怎么回事?
2014 年 10 月 11 日更新
所以到目前为止我没有尝试过让我能够运行命令“npm install -g bower”。出于好奇,正如我之前提到的,我运行了似乎安装 bower 的“sudo npm install -g bower 命令”。但是,键入任何 bower 命令仍会产生“找不到命令”。在尝试 sudo bower 命令时,也会导致“找不到命令”。但我不明白的是,当我运行命令“npm ls”来查看 NPM 安装的内容时,有趣的是,我有一个以下已安装包的列表。您不需要阅读列表,因为它很长,但请注意第一项似乎是凉亭。如果这是真的,这意味着 bower 实际上是由 npm 安装的,那么为什么 bower 命令不起作用?
/Users/myname.
├─┬ bower@1.3.12
│ ├── abbrev@1.0.5
│ ├── archy@0.0.2
│ ├─┬ bower-config@0.5.2
│ │ ├── graceful-fs@2.0.3
│ │ ├─┬ optimist@0.6.1
│ │ │ ├── minimist@0.0.10
│ │ │ └── wordwrap@0.0.2
│ │ └── osenv@0.0.3
│ ├── bower-endpoint-parser@0.2.2
│ ├─┬ bower-json@0.4.0
│ │ ├── deep-extend@0.2.11
│ │ ├── graceful-fs@2.0.3
│ │ └── intersect@0.0.3
│ ├── bower-logger@0.2.2
│ ├─┬ bower-registry-client@0.2.1
│ │ ├── async@0.2.10
│ │ ├── graceful-fs@2.0.3
│ │ ├── lru-cache@2.3.1
│ │ ├── mkdirp@0.3.5
│ │ ├─┬ request@2.27.0
│ │ │ ├── aws-sign@0.3.0
│ │ │ ├── cookie-jar@0.3.0
│ │ │ ├── forever-agent@0.5.2
│ │ │ ├─┬ form-data@0.1.4
│ │ │ │ ├── async@0.9.0
│ │ │ │ └─┬ combined-stream@0.0.5
│ │ │ │ └── delayed-stream@0.0.5
│ │ │ ├─┬ hawk@1.0.0
│ │ │ │ ├── boom@0.4.2
│ │ │ │ ├── cryptiles@0.2.2
│ │ │ │ ├── hoek@0.9.1
│ │ │ │ └── sntp@0.2.4
│ │ │ ├─┬ http-signature@0.10.0
│ │ │ │ ├── asn1@0.1.11
│ │ │ │ ├── assert-plus@0.1.2
│ │ │ │ └── ctype@0.5.2
│ │ │ ├── json-stringify-safe@5.0.0
│ │ │ ├── mime@1.2.11
│ │ │ ├── node-uuid@1.4.1
│ │ │ ├── oauth-sign@0.3.0
│ │ │ ├── qs@0.6.6
│ │ │ └── tunnel-agent@0.3.0
│ │ └── request-replay@0.2.0
│ ├─┬ cardinal@0.4.0
│ │ └─┬ redeyed@0.4.4
│ │ └── esprima@1.0.4
│ ├─┬ chalk@0.5.0
│ │ ├── ansi-styles@1.1.0
│ │ ├── escape-string-regexp@1.0.2
│ │ ├─┬ has-ansi@0.1.0
│ │ │ └── ansi-regex@0.2.1
│ │ ├─┬ strip-ansi@0.3.0
│ │ │ └── ansi-regex@0.2.1
│ │ └── supports-color@0.2.0
│ ├── chmodr@0.1.0
│ ├─┬ decompress-zip@0.0.8
│ │ ├─┬ binary@0.3.0
│ │ │ ├── buffers@0.1.1
│ │ │ └─┬ chainsaw@0.1.0
│ │ │ └── traverse@0.3.9
│ │ ├── mkpath@0.1.0
│ │ ├── nopt@2.2.1
│ │ ├─┬ readable-stream@1.1.13
│ │ │ ├── core-util-is@1.0.1
│ │ │ ├── inherits@2.0.1
│ │ │ ├── isarray@0.0.1
│ │ │ └── string_decoder@0.10.31
│ │ └─┬ touch@0.0.2
│ │ └── nopt@1.0.10
│ ├─┬ fstream@1.0.2
│ │ └── inherits@2.0.1
│ ├─┬ fstream-ignore@1.0.1
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@1.0.0
│ │ └── sigmund@1.0.0
│ ├─┬ glob@4.0.6
│ │ ├── inherits@2.0.1
│ │ ├─┬ minimatch@1.0.0
│ │ │ └── sigmund@1.0.0
│ │ └─┬ once@1.3.1
│ │ └── wrappy@1.0.1
│ ├── graceful-fs@3.0.3
│ ├─┬ handlebars@2.0.0
│ │ ├─┬ optimist@0.3.7
│ │ │ └── wordwrap@0.0.2
│ │ └─┬ uglify-js@2.3.6
│ │ ├── async@0.2.10
│ │ └─┬ source-map@0.1.40
│ │ └── amdefine@0.1.0
│ ├─┬ inquirer@0.7.1
│ │ ├─┬ cli-color@0.3.2
│ │ │ ├── d@0.1.1
│ │ │ ├─┬ es5-ext@0.10.4
│ │ │ │ ├── es6-iterator@0.1.1
│ │ │ │ └── es6-symbol@0.1.1
│ │ │ ├─┬ memoizee@0.3.8
│ │ │ │ ├─┬ es6-weak-map@0.1.2
│ │ │ │ │ ├── es6-iterator@0.1.1
│ │ │ │ │ └── es6-symbol@0.1.1
│ │ │ │ ├── event-emitter@0.3.1
│ │ │ │ ├── lru-queue@0.1.0
│ │ │ │ └── next-tick@0.2.2
│ │ │ └─┬ timers-ext@0.1.0
│ │ │ └── next-tick@0.2.2
│ │ ├── figures@1.3.3
│ │ ├── lodash@2.4.1
│ │ ├── mute-stream@0.0.4
│ │ ├─┬ readline2@0.1.0
│ │ │ └─┬ chalk@0.4.0
│ │ │ ├── ansi-styles@1.0.0
│ │ │ ├── has-color@0.1.7
│ │ │ └── strip-ansi@0.1.1
│ │ ├── rx@2.3.12
│ │ └── through@2.3.6
│ ├─┬ insight@0.4.3
│ │ ├── async@0.9.0
│ │ ├─┬ chalk@0.5.1
│ │ │ ├── ansi-styles@1.1.0
│ │ │ ├── escape-string-regexp@1.0.2
│ │ │ ├─┬ has-ansi@0.1.0
│ │ │ │ └── ansi-regex@0.2.1
│ │ │ ├─┬ strip-ansi@0.3.0
│ │ │ │ └── ansi-regex@0.2.1
│ │ │ └── supports-color@0.2.0
│ │ ├─┬ configstore@0.3.1
│ │ │ ├─┬ js-yaml@3.0.2
│ │ │ │ ├─┬ argparse@0.1.15
│ │ │ │ │ ├── underscore@1.4.4
│ │ │ │ │ └── underscore.string@2.3.3
│ │ │ │ └── esprima@1.0.4
│ │ │ ├── object-assign@0.3.1
│ │ │ └── uuid@1.4.2
│ │ ├─┬ inquirer@0.6.0
│ │ │ ├─┬ cli-color@0.3.2
│ │ │ │ ├── d@0.1.1
│ │ │ │ ├─┬ es5-ext@0.10.4
│ │ │ │ │ ├── es6-iterator@0.1.1
│ │ │ │ │ └── es6-symbol@0.1.1
│ │ │ │ ├─┬ memoizee@0.3.8
│ │ │ │ │ ├─┬ es6-weak-map@0.1.2
│ │ │ │ │ │ ├── es6-iterator@0.1.1
│ │ │ │ │ │ └── es6-symbol@0.1.1
│ │ │ │ │ ├── event-emitter@0.3.1
│ │ │ │ │ ├── lru-queue@0.1.0
│ │ │ │ │ └── next-tick@0.2.2
│ │ │ │ └─┬ timers-ext@0.1.0
│ │ │ │ └── next-tick@0.2.2
│ │ │ ├── lodash@2.4.1
│ │ │ ├── mute-stream@0.0.4
│ │ │ ├─┬ readline2@0.1.0
│ │ │ │ └─┬ chalk@0.4.0
│ │ │ │ ├── ansi-styles@1.0.0
│ │ │ │ ├── has-color@0.1.7
│ │ │ │ └── strip-ansi@0.1.1
│ │ │ ├── rx@2.3.12
│ │ │ └── through@2.3.6
│ │ ├─┬ lodash.debounce@2.4.1
│ │ │ ├── lodash.isfunction@2.4.1
│ │ │ ├─┬ lodash.isobject@2.4.1
│ │ │ │ └── lodash._objecttypes@2.4.1
│ │ │ └─┬ lodash.now@2.4.1
│ │ │ └── lodash._isnative@2.4.1
│ │ ├── object-assign@1.0.0
│ │ ├─┬ os-name@1.0.1
│ │ │ ├── minimist@1.1.0
│ │ │ └── osx-release@1.0.0
│ │ └─┬ tough-cookie@0.12.1
│ │ └── punycode@1.3.1
│ ├── is-root@1.0.0
│ ├── junk@1.0.0
│ ├── lockfile@1.0.0
│ ├── lru-cache@2.5.0
│ ├─┬ mkdirp@0.5.0
│ │ └── minimist@0.0.8
│ ├── mout@0.9.1
│ ├── nopt@3.0.1
│ ├── opn@1.0.0
│ ├── osenv@0.1.0
│ ├─┬ p-throttler@0.1.0
│ │ └── q@0.9.7
│ ├─┬ promptly@0.2.0
│ │ └─┬ read@1.0.5
│ │ └── mute-stream@0.0.4
│ ├── q@1.0.1
│ ├─┬ request@2.42.0
│ │ ├── aws-sign2@0.5.0
│ │ ├─┬ bl@0.9.3
│ │ │ └─┬ readable-stream@1.0.33-1
│ │ │ ├── core-util-is@1.0.1
│ │ │ ├── inherits@2.0.1
│ │ │ ├── isarray@0.0.1
│ │ │ └── string_decoder@0.10.31
│ │ ├── caseless@0.6.0
│ │ ├── forever-agent@0.5.2
│ │ ├─┬ form-data@0.1.4
│ │ │ ├── async@0.9.0
│ │ │ ├─┬ combined-stream@0.0.5
│ │ │ │ └── delayed-stream@0.0.5
│ │ │ └── mime@1.2.11
│ │ ├─┬ hawk@1.1.1
│ │ │ ├── boom@0.4.2
│ │ │ ├── cryptiles@0.2.2
│ │ │ ├── hoek@0.9.1
│ │ │ └── sntp@0.2.4
│ │ ├─┬ http-signature@0.10.0
│ │ │ ├── asn1@0.1.11
│ │ │ ├── assert-plus@0.1.2
│ │ │ └── ctype@0.5.2
│ │ ├── json-stringify-safe@5.0.0
│ │ ├── mime-types@1.0.2
│ │ ├── node-uuid@1.4.1
│ │ ├── oauth-sign@0.4.0
│ │ ├── qs@1.2.2
│ │ ├── stringstream@0.0.4
│ │ ├─┬ tough-cookie@0.12.1
│ │ │ └── punycode@1.3.1
│ │ └── tunnel-agent@0.4.0
│ ├─┬ request-progress@0.3.0
│ │ └── throttleit@0.0.2
│ ├── retry@0.6.0
│ ├── rimraf@2.2.8
│ ├── semver@2.3.2
│ ├─┬ shell-quote@1.4.2
│ │ ├── array-filter@0.0.1
│ │ ├── array-map@0.0.0
│ │ ├── array-reduce@0.0.0
│ │ └── jsonify@0.0.0
│ ├── stringify-object@1.0.0
│ ├─┬ tar-fs@0.5.2
│ │ ├─┬ pump@0.3.5
│ │ │ ├─┬ end-of-stream@1.0.0
│ │ │ │ └─┬ once@1.3.1
│ │ │ │ └── wrappy@1.0.1
│ │ │ └── once@1.2.0
│ │ └─┬ tar-stream@0.4.7
│ │ ├── bl@0.9.3
│ │ ├─┬ end-of-stream@1.1.0
│ │ │ └─┬ once@1.3.1
│ │ │ └── wrappy@1.0.1
│ │ ├─┬ readable-stream@1.0.33-1
│ │ │ ├── core-util-is@1.0.1
│ │ │ ├── inherits@2.0.1
│ │ │ ├── isarray@0.0.1
│ │ │ └── string_decoder@0.10.31
│ │ └── xtend@4.0.0
│ ├── tmp@0.0.23
│ ├─┬ update-notifier@0.2.0
│ │ ├─┬ configstore@0.3.1
│ │ │ ├─┬ js-yaml@3.0.2
│ │ │ │ ├─┬ argparse@0.1.15
│ │ │ │ │ ├── underscore@1.4.4
│ │ │ │ │ └── underscore.string@2.3.3
│ │ │ │ └── esprima@1.0.4
│ │ │ ├── object-assign@0.3.1
│ │ │ └── uuid@1.4.2
│ │ ├─┬ latest-version@0.2.0
│ │ │ └─┬ package-json@0.2.0
│ │ │ ├─┬ got@0.3.0
│ │ │ │ └── object-assign@0.3.1
│ │ │ └─┬ registry-url@0.1.1
│ │ │ └─┬ npmconf@2.1.1
│ │ │ ├─┬ config-chain@1.1.8
│ │ │ │ └── proto-list@1.2.3
│ │ │ ├── inherits@2.0.1
│ │ │ ├── ini@1.3.0
│ │ │ ├─┬ once@1.3.1
│ │ │ │ └── wrappy@1.0.1
│ │ │ └── uid-number@0.0.5
│ │ ├── semver-diff@0.1.0
│ │ └─┬ string-length@0.1.2
│ │ └─┬ strip-ansi@0.2.2
│ │ └── ansi-regex@0.1.0
│ └── which@1.0.5
├─┬ easyimage@1.0.3
│ └── q@1.0.1
├─┬ grunt@0.4.5
│ ├── async@0.1.22
│ ├── coffee-script@1.3.3
│ ├── colors@0.6.2
│ ├── dateformat@1.0.2-1.2.3
│ ├── eventemitter2@0.4.14
│ ├── exit@0.1.2
│ ├─┬ findup-sync@0.1.3
│ │ ├─┬ glob@3.2.11
│ │ │ ├── inherits@2.0.1
│ │ │ └─┬ minimatch@0.3.0
│ │ │ ├── lru-cache@2.5.0
│ │ │ └── sigmund@1.0.0
│ │ └── lodash@2.4.1
│ ├── getobject@0.1.0
│ ├─┬ glob@3.1.21
│ │ ├── graceful-fs@1.2.3
│ │ └── inherits@1.0.0
│ ├─┬ grunt-legacy-log@0.1.1
│ │ ├── lodash@2.4.1
│ │ └── underscore.string@2.3.3
│ ├── grunt-legacy-util@0.2.0
│ ├── hooker@0.2.3
│ ├── iconv-lite@0.2.11
│ ├─┬ js-yaml@2.0.5
│ │ ├─┬ argparse@0.1.15
│ │ │ ├── underscore@1.4.4
│ │ │ └── underscore.string@2.3.3
│ │ └── esprima@1.0.4
│ ├── lodash@0.9.2
│ ├─┬ minimatch@0.2.14
│ │ ├── lru-cache@2.5.0
│ │ └── sigmund@1.0.0
│ ├─┬ nopt@1.0.10
│ │ └── abbrev@1.0.5
│ ├── rimraf@2.2.8
│ ├── underscore.string@2.2.1
│ └── which@1.0.5
└─┬ grunt-bower-install@1.6.0
├─┬ bower-config@0.5.2
│ ├── graceful-fs@2.0.3
│ ├── mout@0.9.1
│ ├─┬ optimist@0.6.1
│ │ ├── minimist@0.0.10
│ │ └── wordwrap@0.0.2
│ └── osenv@0.0.3
└─┬ wiredep@1.5.0
├─┬ chalk@0.1.1
│ ├── ansi-styles@0.1.2
│ └── has-color@0.1.7
├─┬ glob@3.2.11
│ ├── inherits@2.0.1
│ └─┬ minimatch@0.3.0
│ ├── lru-cache@2.5.0
│ └── sigmund@1.0.0
├── lodash@1.3.1
└─┬ through2@0.4.2
├─┬ readable-stream@1.0.33-1
│ ├── core-util-is@1.0.1
│ ├── inherits@2.0.1
│ ├── isarray@0.0.1
│ └── string_decoder@0.10.31
└─┬ xtend@2.1.2
└── object-keys@0.4.0