为了学习 Angular 2,我正在尝试他们的教程。
我收到这样的错误:
(node:4796) UnhandledPromiseRejectionWarning: Unhandled promise rejection (r ejection id: 1): Error: spawn cmd ENOENT
[1] (node:4796) DeprecationWarning: Unhandled promise rejections are deprecated.
In the future, promise rejections that are not handled will terminate the Node.
js process with a non-zero exit code.
我在 SO 中经历了不同的问题和答案,但找不到“未处理的承诺拒绝”是什么。
谁能简单地解释一下它是什么以及什么是 Error: spawn cmd ENOENT
,它何时出现以及我必须检查什么才能消除此警告?
原文由 Mohammad Sadiqur Rahman 发布,翻译遵循 CC BY-SA 4.0 许可协议
这个错误的根源在于每个承诺都应该处理承诺拒绝,即有一个 .catch(…) 。您可以通过将 .catch(…) 添加到代码中的承诺来避免相同的情况,如下所示。
例如,函数 PTest() 将根据全局变量 somevar 的值解析或拒绝承诺
在某些情况下,即使我们为 promise 编写了 .catch(..) ,也会出现 “未处理的 promise 拒绝” 消息。这完全取决于您如何编写代码。以下代码将生成 “未处理的承诺拒绝” ,即使我们正在处理
catch
。区别在于您不将
.catch(...)
作为链处理,而是作为单独的处理。由于某种原因,JavaScript 引擎将其视为没有未处理的承诺拒绝的承诺。