我正在尝试使用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!
任何帮助解决此问题的方法将不胜感激! Strapi可能在某处记录设置错误,还是有办法获取详细记录? MongoDB是否有可能在某个地方记录连接错误?
答案 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中,则可以将该命令移至路径中,或尝试重新安装。