“DEBUG = myapp:* npm start”的解释实际上是在做

快速应用程序生成器(位于此处 )的入门页面指出使用$ DEBUG=myapp:* npm start启动服务器$ DEBUG=myapp:* npm start如果使用MacOS或Linux)。

这工作正常,但我无法理解这一行实际上在做什么。 我会猜想它将分配的东西给variablesDEBUG ,但退出服务器后,我运行echo $DEBUG ,它什么都不打印。 我在猜测:是关键,但是我不清楚怎么样/为什么。

希望有人能为我打破这个。

事实certificate,我认为这比实际情况复杂得多。 Chepner的回答让我头脑中有些齿轮脱落。

我创build了一个python脚本来打印DEBUGvariables,并调用它来代替npm start

$ DEBUG=myapp:* python printvar.py

果然,这印myapp:* 。 看起来我最大的缺点是variables赋值之后的空间被用作命令之间的分隔符:*只不过是分配给DEBUG的variables的一部分。

DEBUG是一个环境variables,在会话期间通过通配符*设置为myapp应用程序中的所有debugging器。 DEBUGvariables被“tiny node.js&browserdebugging工具用于你的库和应用程序”所使用,可以在这里find相关文档。

这是一个临时任务; npm在其环境中看到分配的值,但不会影响当前的shell。 在npm退出之后, DEBUG保留它的任何价值(或者保持不变)。

DEBUG被设置为npm和subprocess的环境variables,但是没有设置在你的shell中,考虑这个:

 HELLO=World bash -c 'echo $HELLO' # World HELLO=World bash -c "bash -c 'echo \$HELLO'" # World echo $HELLO # Nothing, assuming that HELLO was null before running the above snippets 

在你的情况下,值myapp:*分配给variablesDEBUG 。 而这个variables将在npm内部可用,出于什么原因需要我不能回答。

  • DEBUG=myapp:* npm start由两部分组成。

  • 第一部分是DEBUG=myapp:* ,第二部分是npm start

  • 您可以先在命令行工具中运行DEBUG=myapp:* ,然后运行npm start

  • DEBUG=myapp:*表示您正在告诉nodejs您想打开日志logging以进行debugging。

    • 请记住用您的应用程序名称replacemyapp 。 您可以在"name"属性下的package.json文件中find您的应用程序名称。 在这里输入图像描述
    • * myapp:*表示查看Express中使用的所有内部日志
    • 如果您只想查看路由器实现中的日志,请将DEBUG的值设置为myapp:router 。 同样,要仅从应用程序实现中查看日志,请将DEBUG的值设置为myapp:application ,等等。
  • npm start告诉npm运行package.json文件中描述的脚本,脚本名称叫做start 在这里输入图像描述

  • 来源:https://expressjs.com/en/guide/debugging.html