了解反应错误输出

时间:2016-12-20 12:10:14

标签: reactjs

首先,我是否可以强调这是关于调试的进程而不是特定错误的问题。作为一个React / Redux新手,我不时会得到一个React项目,它不会“编译”,典型的错误是这样的:

{ Error: Cannot find module 'redux' from 'C:\Users\abcde\Documents\ReactTest\node_modules\react-redux\lib\utils'
    at C:\Users\abcde\Documents\ReactTest\node_modules\browser-resolve\node_modules\resolve\lib\async.js:46:17
    at process (C:\Users\abcde\Documents\ReactTest\node_modules\browser-resolve\node_modules\resolve\lib\async.js:173:43)
    at ondir (C:\Users\abcde\Documents\ReactTest\node_modules\browser-resolve\node_modules\resolve\lib\async.js:188:17)
    at load (C:\Users\abcde\Documents\ReactTest\node_modules\browser-resolve\node_modules\resolve\lib\async.js:69:43)
    at onex (C:\Users\abcde\Documents\ReactTest\node_modules\browser-resolve\node_modules\resolve\lib\async.js:92:31)
    at C:\Users\abcde\Documents\ReactTest\node_modules\browser-resolve\node_modules\resolve\lib\async.js:22:47
    at FSReqWrap.oncomplete (fs.js:123:15)
  stream:
   Labeled {
     _readableState:
      ReadableState {
        objectMode: true,
        highWaterMark: 16,
        buffer: [Object],
        length: 0,
        pipes: [Object],
        pipesCount: 1,
        flowing: true,
        ended: false,
        endEmitted: false,
        reading: true,
        sync: false,
        needReadable: true,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        defaultEncoding: 'utf8',
        ranOut: false,
        awaitDrain: 0,
        readingMore: false,
        decoder: null,
        encoding: null },
     readable: true,
     domain: null,
     _events:
      { end: [Object],
        error: [Object],
        data: [Function: ondata],
        _mutate: [Object] },
     _eventsCount: 4,
     _maxListeners: undefined,
     _writableState:
      WritableState {
        objectMode: true,
        highWaterMark: 16,
        needDrain: false,
        ending: true,
        ended: true,
        finished: true,
        decodeStrings: true,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function],
        writecb: null,
        writelen: 0,
        bufferedRequest: null,
        lastBufferedRequest: null,
        pendingcb: 0,
        prefinished: true,
        errorEmitted: false,
        bufferedRequestCount: 0,
        corkedRequestsFree: [Object] },
     writable: false,
     allowHalfOpen: true,
     _options: { objectMode: true },
     _wrapOptions: { objectMode: true },
     _streams: [ [Object] ],
     length: 1,
     label: 'deps' } }

这似乎没有给出关于错误在哪里的指示,仅仅是它是什么。确定错误所在的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

该错误只是表示您尝试在fs.js文件中加载redux但未找到。 Fs.js文件需要redux,但模块中不存在。

你能试试吗

npm install redux --save-dev

然后试试。它应该工作。

答案 1 :(得分:1)

我注意到你想强调调试的进程,但其他答案并没有太多涉及。

我加粗了TL; DR部分

您必须知道的是您首先在Node.js上运行。当你说" React / Redux project"时,你实际上是在谈论碰巧使用React和Redux库的Node.js项目。

因此,如果你"编译"您的项目(您可能正在运行npm start并通过webpack运行它,因为您已经使用了React),您的第一直觉应该是&#34 ;节点有问题......"

因此当错误显示" ...找不到模块......"时,它可能正在寻找一个Node模块(使用npm install安装,因此人们向你展示的其他答案。)

如果出现任何其他错误,请首先将其视为Node错误,除非它明确说明了React或Redux或诸如此类的错误。如果你谷歌错误并说它来自Node,你可能会获得更相关的结果。

此外,您的错误实际上会告诉您错误的位置!这部分:

from 'C:\Users\abcde\Documents\ReactTest\node_modules\react-redux\lib\utils' at C:\Users\abcde\Documents\ReactTest\node_modules\browser-resolve\node_modules\resolve\lib\async.js:46:17 at FSReqWrap.oncomplete (fs.js:123:15)

称为堆栈跟踪。它会显示错误发生时程序的位置。 请注意,它会显示一系列文件名(以C:\ ...开头),以及行号和列号(fs.js: 123:15 )。实际上已经指定了错误发生的位置,直到确切的光标位置!

堆栈跟踪是文件的而不是单个文件的原因是为了给出上下文:您不仅知道哪个文件以及您的错误发生在哪个光标位置,你也知道如何调用类/函数/模块/等(也许你错过了其他文件中的一个关键参数)。

最后,识别这些错误只需要经验。您可能很难理解错误消息试图说出的内容,但是一旦遇到数百个错误消息,您很快就会发现"找不到模块"通常意味着你必须npm install

答案 2 :(得分:0)

尝试运行此命令:

npm install redux

或者,您可以添加" - 保存"参数将依赖项保存到package.json中,如下所示:

npm install redux --save

通常,当您下载项目时,您需要的第一步是运行" npm install",此命令将安装package.json中指定的所有依赖项。