“DEBUG = myapp:* npm start”的解释实际上是在做
快速应用程序生成器(位于此处 )的入门页面指出使用$ DEBUG=myapp:* npm start
启动服务器$ DEBUG=myapp:* npm start
如果使用MacOS或Linux)。
这工作正常,但我无法理解这一行实际上在做什么。 我会猜想它将分配的东西给variablesDEBUG
,但退出服务器后,我运行echo $DEBUG
,它什么都不打印。 我在猜测:
是关键,但是我不清楚怎么样/为什么。
希望有人能为我打破这个。
事实certificate,我认为这比实际情况复杂得多。 Chepner的回答让我头脑中有些齿轮脱落。
我创build了一个python脚本来打印DEBUG
variables,并调用它来代替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。- 请记住用您的应用程序名称replace
myapp
。 您可以在"name"
属性下的package.json文件中find您的应用程序名称。 -
*
myapp:*
表示查看Express中使用的所有内部日志 - 如果您只想查看路由器实现中的日志,请将DEBUG的值设置为
myapp:router
。 同样,要仅从应用程序实现中查看日志,请将DEBUG的值设置为myapp:application
,等等。
- 请记住用您的应用程序名称replace
-
npm start
告诉npm运行package.json文件中描述的脚本,脚本名称叫做start
-
来源:https://expressjs.com/en/guide/debugging.html