【问题标题】:if I try bunyan.createLogger my application doesn't start and doesn't show error如果我尝试 bunyan.createLogger 我的应用程序不会启动并且不会显示错误
【发布时间】:2017-08-01 07:47:13
【问题描述】:

如果我尝试使用 winston 模块,我就成功了。不过,如果我尝试使用 bunyan,我的应用程序不会启动,也不会显示任何错误(或者我不知道如何找到错误)。

我正在使用 Visual Studio Code 进行调试,尽管我认为它与这个问题无关。

如果我只需要winston,我不会出错。添加“bunyan.createLogger({name: "myapp"})”时会出现问题,如下所示。

我没有兴趣将 bunyan 与 winston 进行比较。我绝对有兴趣使用 bunyan,除非有与其他模块冲突的原因(我的意思是其他要求如下所示)。我刚刚在这里提到了winston,因为我可以成功使用它,并且我注意到winston 不依赖于“.createLogger”(至少我读过的示例从未将“.createLogger”用于winston,并且总是为bunyan 显示它)。

有些东西引起了我的注意,虽然我不知道它是否与这种情况有关,我也不知道为什么:我总是使用 npm install "the dependency" -s 安装依赖项,因为我想跟踪所有模块在我的 package.json 项目中使用。对我来说有点奇怪,安装 npm 后我看不到它(请参阅下面的 package.json)。

var express = require('express');
var bodyParser = require('body-parser');
var Client = require('node-rest-client').Client;
var bunyan = require('bunyan');
//var winston = require('winston');

var logBunyan = bunyan.createLogger({name: "myapp"});

//winston.log('info', 'Hello distributed log files!');
//winston.info('Hello again distributed logs');

...

package.json(winston 和 bunyan 不应该出现在这里,因为它们都是用“-save”安装的吗?)

{
  "name": "myapp",
  "main": "server.js",
  "dependencies": {
    "body-parser": "^1.17.1",
    "express": "^4.15.2",
    "node-rest-client": "^3.0.3"
  }
}

【问题讨论】:

    标签: node.js npm npm-install winston bunyan


    【解决方案1】:

    例如添加到您的 package.json 依赖项:

    "bunyan": "^1.8.8"
    

    然后执行npm install 然后运行您的应用程序。

    示例 app.js:

    var bunyan = require('bunyan');
    var log = bunyan.createLogger({name: "myapp"});
    log.info("Hello!");
    

    【讨论】:

    • Hya,不幸的是,我仍然遇到完全相同的错误。事实上,我可以看到 bunyan 模块已加载。我可以在 bunyan.js 第 1618 行和调试中放置一个断点,但我找不到任何异常。第 1617 到 1618 行是: info.module.exports.createLogger = function createLogger(options) { return new Logger(options); };
    • 我已经更新了我的答案。此代码代表整个应用程序代码,当您执行 node app.js 时,它会记录消息。
    • 您的应用可能正在启动,但您什么也没做。
    • 嘿,正如我上面声明的,如果我从 bunyan 更改为 winston,我可以成功记录任何我想要的内容。我看到两者之间存在一定的“语义”差异:bunyan 有“.createLogger”。当我的代码到达“.createLogger”时,它就会毫无例外地停止。
    • 你有没有试过在创建logger后写logBunyan.info("hello")
    【解决方案2】:

    问题根本不在于 Bunyan,也不在于 NodeJ。今天我对 util.inspect 有类似的问题。每当在 Visual Studio Code 中,我使用此代码到达一行时,我的服务器在没有任何有用信息的情况下崩溃。我尝试通过终端(节点 server.js)直接运行,我看到 util.inspect 和 bunyan.createLogger 都按预期工作。我在这种情况下潜水(通过终端工作,但不能工作抛出 Visual Studio Code),突然我意识到 Visual Studio Code 中的 TypeScript 版本和我的 Debian 中安装的版本之间存在一定的冲突。我不希望用更好的论据来解释,但它可能会帮助处于类似情况的人。我做了: 1 - 下载 Visual Studio Code 的可移植版本,而不是使用 npm。我注意到从 1.8 版到 1.10 版的小升级 2 - 我在终端、npm、nodejs 和 typescript 中进行了更新 PS.:如果我多加注意,我应该很容易明白这一点。每当我启动 VS Code 时,我都会收到“版本不匹配!全局 tsc(1.7.5)!= VS Code 的语言服务(2.2.1)。可能会出现不一致的编译错误”,现在这样的消息结束了。 这修复了错误。 希望对以后的读者有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-17
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 2018-07-03
      • 1970-01-01
      相关资源
      最近更新 更多