如何阅读 npm ENOENT 错误

Posted

技术标签:

【中文标题】如何阅读 npm ENOENT 错误【英文标题】:How to read npm ENOENT errors 【发布时间】:2014-03-27 22:05:42 【问题描述】:

我有 2 个 ENOENT 错误。我知道“ENOENT”的意思是“错误 NO ENTrance”,但这两个 ENOENT 到底缺少什么?这些错误信息是什么意思?我想破译它们以便能够调试问题。

npm ERR! Error: ENOENT, lstat '/home/ubuntu/.npm/iconv-lite/0.2.11/package/encodings/table/gbk.js'
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! System Linux 3.2.0-54-virtual
npm ERR! command "/home/ubuntu/local/bin/node" "/home/ubuntu/local/bin/npm" "install"
npm ERR! cwd /home/ubuntu/app_e
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.3
npm ERR! path /home/ubuntu/.npm/iconv-lite/0.2.11/package/encodings/table/gbk.js
npm ERR! fstream_path /home/ubuntu/.npm/iconv-lite/0.2.11/package/encodings/table/gbk.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /home/ubuntu/local/lib/node_modules/npm/node_modules/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)

npm ERR! Error: ENOENT, chmod '/home/ubuntu/app_f/node_modules/grunt/lib/grunt/util.js'
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! System Linux 3.2.0-54-virtual
npm ERR! command "/home/ubuntu/local/bin/node" "/home/ubuntu/local/bin/npm" "install"
npm ERR! cwd /home/ubuntu/app_f
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.3
npm ERR! path /home/ubuntu/app_f/node_modules/grunt/lib/grunt/util.js
npm ERR! fstream_path /home/ubuntu/app_f/node_modules/grunt/lib/grunt/util.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! fstream_finish_call chmod
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /home/ubuntu/local/lib/node_modules/npm/node_modules/fstream/lib/writer.js:305:19
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm http GET https://registry.npmjs.org/graceful-fs

一个似乎在 gbk.js 上有一个“lstat”问题,另一个在 util.js 上有一个“chmod”问题,但是命令“node”、“npm”和“install”、“cwd”呢? “fstream”和Object.oncomplete?

这里是writer.js:284。 这里是writer.js:305。

【问题讨论】:

【参考方案1】:

读取错误行:Error: ENOENT, lstat '/home/ubuntu/.npm/iconv-lite/0.2.11/package/encodings/table/gbk.js'

这意味着在执行fs.lstat('/home/ubuntu/.npm/iconv-lite/0.2.11/package/encodings/table/gbk.js', ...) 之类的操作时,npm 收到了ENOENT 错误。这意味着文件丢失了,但 npm 预计它会在那里。

对于第二个,npm 正在执行类似 fs.chmod('/home/ubuntu/app_f/node_modules/grunt/lib/grunt/util.js', ...) 的操作,并且 npm 收到了 ENOENT 错误。

其余的是调试信息。这些都是发生错误时的一些变量/属性:

npm ERR! System Linux 3.2.0-54-virtual --> THis is the system type
npm ERR! command "/home/ubuntu/local/bin/node" "/home/ubuntu/local/bin/npm" "install" --> the command that was issued
npm ERR! cwd /home/ubuntu/app_f --> The current working directory
npm ERR! node -v v0.10.26 --> You should know this one!
npm ERR! npm -v 1.4.3 --> You should know this one!
npm ERR! path /home/ubuntu/app_f/node_modules/grunt/lib/grunt/util.js

这些是关于fstream module。它表明它到底在做什么。

npm ERR! fstream_path /home/ubuntu/app_f/node_modules/grunt/lib/grunt/util.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! fstream_finish_call chmod

这是错误发生时的堆栈跟踪(类似于conosle.log(new Error().stack) 的输出):

npm ERR! fstream_stack /home/ubuntu/local/lib/node_modules/npm/node_modules/fstream/lib/writer.js:305:19
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)

【讨论】:

【参考方案2】:

阅读 NPM 日志的一个怪癖:必须查看流中的第一个错误。上游错误可能会导致文件丢失,从而导致许多错误,例如您在上面报告的错误。

尝试转到日志顶部,然后向下滚动,直到找到最初的第一个错误。

【讨论】:

以上是关于如何阅读 npm ENOENT 错误的主要内容,如果未能解决你的问题,请参考以下文章

npm 错误!错误:生成 ENOENT

npm 错误!代码 ENOENT,npm 错误!错误号 34

npm 错误! Windows_NT 6.1.7601:ENOENT:没有这样的文件或目录

所有 npm 命令都给出相同的错误(ENOENT)

无法在 Windows 8 上启动 npm(错误:ENOENT,stat 'C:\Users\User\AppData\Roaming\npm')[重复]

Laravel 5.8 npm run dev 生成 ENOENT 错误