Node.js 解释什么';调试=myapp:*npm启动';他实际上在做什么
Express application generator(位于)的入门页面显示,如果使用MacOS或Linux,则使用Node.js 解释什么';调试=myapp:*npm启动';他实际上在做什么,node.js,bash,express,command-line,Node.js,Bash,Express,Command Line,Express application generator(位于)的入门页面显示,如果使用MacOS或Linux,则使用$DEBUG=myapp:*npm start启动服务器 这很好,但我很难理解这条线到底在做什么。我猜它会给变量DEBUG赋值,但在退出服务器后,我运行了echo$DEBUG,它没有打印任何内容。我猜:在某种程度上是这里的关键,但我不清楚如何/为什么 希望有人能帮我解决这个问题。这是一项临时任务npm在其环境中查看指定的值,但它不会影响当前shell调试保留在npm退出后它拥有
$DEBUG=myapp:*npm start
启动服务器
这很好,但我很难理解这条线到底在做什么。我猜它会给变量DEBUG
赋值,但在退出服务器后,我运行了echo$DEBUG
,它没有打印任何内容。我猜:
在某种程度上是这里的关键,但我不清楚如何/为什么
希望有人能帮我解决这个问题。这是一项临时任务
npm
在其环境中查看指定的值,但它不会影响当前shell<代码>调试保留在npm
退出后它拥有的(或保持未设置的)任何值。事实证明,我认为这比实际情况复杂得多。切普纳的回答让我脑子里有些齿轮松了
我创建了一个python脚本,用于打印DEBUG
变量并调用它,而不是npm start
$DEBUG=myapp:*python printvar.py
果然,这是打印的
myapp:
。似乎我缺少的一个重要部分是变量赋值后的空格用作命令和之间的分隔符:*
不过是文本,它是被赋值给DEBUG
DEBUG
的变量的一部分,被设置为npm
和sub的环境变量进程,但未设置在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:
被分配给变量DEBUG
。这个变量将在npm中可用,我无法回答它的原因。DEBUG是一个环境变量,在会话期间通过通配符*设置给myapp应用程序中的所有调试器。调试变量由“tiny node.js&browser用于库和应用程序的调试实用程序”使用,可以找到相关文档。
由两部分组成DEBUG=myapp:*npm start
- 第一部分是
第二部分是DEBUG=myapp:
npm start
- 您可以先在命令行工具中运行
,然后 然后运行DEBUG=myapp:
npm start
表示您正在告诉nodejs您希望打开日志以进行调试DEBUG=myapp::
- 记住用你的应用程序名替换
。您可以在package.json文件中的myapp
属性下找到您的应用程序名称。“name”
中的myapp:
表示查看Express中使用的所有内部日志*
- 如果您只想查看路由器实现中的日志,请将DEBUG的值设置为
。同样,要仅从应用程序实现中查看日志,请将DEBUG的值设置为myapp:router
,依此类推myapp:application
- 记住用你的应用程序名替换
告诉npm运行package.json文件中声明的npm start
脚本,脚本名为
start
DEBUG=express:*, npm start
DEBUG=express.*, npm start
DEBUG=express*, npm start
以下设置仅显示内部路由器的内部日志级别消息
DEBUG=express:router, npm start
DEBUG=express.router, npm start
现在,为了查看“应用程序”级调试语句。使用debug函数添加到代码中的
它与您的模块依赖关系有关。传递到调试包中的值。这些值可以是任意名称-也就是说,它们不需要匹配package.json、文件、对象变量名等。但是,env变量DEBUG值需要与代码中传递到调试包中的值相对应
这行代码
var debug = require('debug') ('myapp:myapp');
考虑这两个文件
www
…
var debug = require('debug')('myapp:www');
app.js
…
var debug = require('debug')('myapp:app');
然后,如果我们运行以下场景:
vagrant@n1:~/despobaldo/server$
vagrant@n1:~/despobaldo/server$DEBUG=myapp:*,express:router npm start
> server@0.0.0启动/家庭/流浪者/despobaldo/server
>节点。/bin/www
快速:路由器使用“/”查询+0ms
express:路由器使用“/”expressInit+4ms
快速:路由器使用“/”记录器+0ms
快速:路由器使用“/”jsonParser+7ms
快速:路由器使用“/”urlencodedParser+3ms
快速:路由器使用“/”cookieParser+0ms
快速:路由器使用“/”serveStatic+1ms
myapp:app此处我是+0ms
快速:路由器使用“/”路由器+1ms
快速:路由器使用“/用户”路由器+0ms
快速:路由器使用“/”+0ms
快速:路由器使用“/”+0ms
myapp:www在端口3000+7ms上侦听
^Cvagrant@n1:~/despobaldo/server$
切普纳说的话,以及:
只是价值的一部分。我也有同样的疑问。许多人只是复制了文档而没有解释它的用法。他们为什么要添加:*在myapp的末尾?这篇文章是不正确的debug
根本不看package.json
。传递给require('debug')('some:app')
的内容就是传递给debug=some:app
@andrewlam的内容该文件是什么set
?除此之外,其他所有内容看起来都像一个express generator项目。
vagrant@n1:~/despobaldo/server$ DEBUG=myapp:* npm start
> server@0.0.0 start /home/vagrant/despobaldo/server
> node ./bin/www
myapp:app here I am +0ms
myapp:www Listening on port 3000 +8ms
^Cvagrant@n1:~/despobaldo/server$
vagrant@n1:~/despobaldo/server$
vagrant@n1:~/despobaldo/server$ DEBUG=myapp:www npm start
> server@0.0.0 start /home/vagrant/despobaldo/server
> node ./bin/www
myapp:www Listening on port 3000 +0ms
^Cvagrant@n1:~/despobaldo/server$
vagrant@n1:~/despobaldo/server$
vagrant@n1:~/despobaldo/server$ DEBUG=myapp:app npm start
> server@0.0.0 start /home/vagrant/despobaldo/server
> node ./bin/www
myapp:app here I am +0ms
^Cvagrant@n1:~/despobaldo/server$
vagrant@n1:~/despobaldo/server$
vagrant@n1:~/despobaldo/server$
vagrant@n1:~/despobaldo/server$
vagrant@n1:~/despobaldo/server$ DEBUG=myapp:*,express:router npm start
> server@0.0.0 start /home/vagrant/despobaldo/server
> node ./bin/www
express:router use '/' query +0ms
express:router use '/' expressInit +4ms
express:router use '/' logger +0ms
express:router use '/' jsonParser +7ms
express:router use '/' urlencodedParser +3ms
express:router use '/' cookieParser +0ms
express:router use '/' serveStatic +1ms
myapp:app here I am +0ms
express:router use '/' router +1ms
express:router use '/users' router +0ms
express:router use '/' <anonymous> +0ms
express:router use '/' <anonymous> +0ms
myapp:www Listening on port 3000 +7ms
^Cvagrant@n1:~/despobaldo/server$