Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 解释什么';调试=myapp:*npm启动';他实际上在做什么_Node.js_Bash_Express_Command Line - Fatal编程技术网

Node.js 解释什么';调试=myapp:*npm启动';他实际上在做什么

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退出后它拥有

Express application generator(位于)的入门页面显示,如果使用MacOS或Linux,则使用
$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

  • DEBUG=myapp::
    表示您正在告诉nodejs您希望打开日志以进行调试

    • 记住用你的应用程序名替换
      myapp
      。您可以在package.json文件中的
      “name”
      属性下找到您的应用程序名称。
    • myapp:
      中的
      *
      表示查看Express中使用的所有内部日志
    • 如果您只想查看路由器实现中的日志,请将DEBUG的值设置为
      myapp:router
      。同样,要仅从应用程序实现中查看日志,请将DEBUG的值设置为
      myapp:application
      ,依此类推
  • npm start
    告诉npm运行package.json文件中声明的
    脚本,脚本名为
    start


是分配给env变量的文本

生产线正在做什么以及它是如何工作的,如下所示:

首先,我将讨论express内部级调试消息。以下环境设置均显示相同的内部日志级别

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');
然后,如果我们运行以下场景:

  • 调试=myapp:*npm启动
  • DEBUG=myapp:www-npm-start
  • 调试=myapp:app npm启动
  • 我们得到以下结果:

    为了查看内部和“应用程序”级别的日志记录,您可以执行以下操作:

    DEBUG=myapp:*,express:路由器npm启动

    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$