使用MongoDB创建新的Strapi项目时,导致错误“连接测试失败:spawn npm; ENOENT”的原因是什么?

时间:2019-12-21 19:20:33

标签: mongodb ubuntu strapi

我正在尝试使用MongoDB在Ubuntu 16.4上创建一个新的Strapi应用程序。在逐步完成本教程的操作后,在这里https://strapi.io/documentation/3.0.0-beta.x/guides/databases.html#mongodb-installation,出现以下错误:连接测试失败:spawn npm;情感

该错误似乎很明显,但是我在找到导致该错误的原因时遇到了问题。我已经安装了最新版本的MongoDB,并确保它正在使用service mongod status运行。我也可以使用nc直接连接,如下所示。

$ nc -zvv localhost 27017
Connection to localhost 27017 port [tcp/*] succeeded!

这是终端输出的图像: enter image description here

任何帮助解决此问题的方法将不胜感激! Strapi可能在某处记录设置错误,还是有办法获取详细记录? MongoDB是否有可能在某个地方记录连接错误?

2 个答案:

答案 0 :(得分:0)

我能找到答案。问题是使用npx而不是Yarn。 Strapi文档指出这两种方法都应该起作用,但是,根据我的经验很明显,使用npx时存在错误。

我切换到了Yarn,该过程按预期进行,没有错误。否则步骤完全相同。

更新:Strapi文档中也有错字。它们在项目名称之前包含单词“ new”,这将创建一个名为new的项目,而忽略该项目名称。

Strapi文档(不正确):

yarn create strapi-app new my-project

根据我的经验正确使用:

yarn create strapi-app my-project

答案 1 :(得分:0)

ENOENT错误是“ Error NO ENTry(或Error NO ENTity)的缩写,实际上可用于多个文件/目录。” Why does ENOENT mean "No such file or directory"?

我所读到的所有内容都指向环境变量和process.env.PATH的问题。 “注意:几乎总是由于该命令不存在,由于工作目录不存在或仅Windows错误导致此错误。” How do I debug "Error: spawn ENOENT" on node.js?

如果您使用上面的链接中的Jiaji Zhou提供的功能并将其粘贴到config / functions / bootstrap.js文件的顶部(module.exports上方),则可能会更好地了解错误的位置正在发生,特别是它应该告诉您它运行的命令。然后运行命令> which nameOfCommand以查看其返回的文件路径。
“未安装的程序是未找到命令的最常见原因。如果需要,请参考每个命令文档并进行安装。” -拉康巴斯(来自同一链接,在周嘉吉的回答下方)

这就是我解释以上所有内容并形成解决方案的方式。将该函数放在bootstrap.js中,然后接受从该函数返回的命令并运行> which nameOfCommand。然后在bootstrap.js(您可以注释掉该函数)中,放入console.log(process.env.PATH),它将返回当前环境正在检查可执行文件的所有目录的字符串。如果您从哪个命令返回的路径不在您的process.env.PATH中,则可以将该命令移至路径中,或尝试重新安装。