久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

如何讓 Winston 使用 Webpack?

How do I get Winston to work with Webpack?(如何讓 Winston 使用 Webpack?)
本文介紹了如何讓 Winston 使用 Webpack?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有一個使用 node.js 的電子應用程序.我想使用 Winston 登錄應用程序.我已將 winston 添加到我的 package.json 文件中,但是當我為 webpack 運行構建命令時,我收到了來自 winston 中的 colors.js 依賴項的一些警告.

I have an electron application which is using node.js. I would like to use Winston for logging in the application. I've added winston to my package.json file, but when I run the build command for webpack I'm getting some warnings from the colors.js dependency in winston.

'...the request of a dependency is an expression...'

然后它引用winston 和colors.js.忽略警告不起作用,因為電子應用程序在嘗試從 winston 加載一些文件時遇到異常.

It then references winston and colors.js. Ignoring the warnings doesn't work, as the electron application gets an exception trying to load some files from winston.

我在 SO 和 github 站點上進行了一些挖掘,他們說 colors.js 有一些動態的 require 語句,webpack 有問題.我還看到其他示例項目似乎已經啟動并運行了winston,并且在他們的項目中沒有任何問題.有誰知道如何在電子應用程序中正確包含帶有 webpack 的 winston 日志記錄包?

I did some digging on SO and the github site and they say that colors.js has some dynamic require statements that webpack is having issues with. I've also seen that other sample projects seem to have winston up and running without any issues in their projects. Does anyone know how to correctly include the winston logging package with webpack in an electron app?

推薦答案

這個問題有兩個方面:

1) winston 直接或間接依賴于 color.js,因此一旦 winston 存在,依賴項就會自動包含在內.在它的一些舊版本中,它包含一個動態的 require 語句,這導致:

1) winston directly or indirectly depends on color.js, so that dependency automatically gets included, once winston is there. In some older versions of it, it included a dynamic require statement, which leads to this:

2) 一個依賴有動態的 require 語句,Webpack 無法處理;您可以配置 webpack 以便它可以忽略此特定情況,或者也可以將 winston 升級到更新版本,因此 color.js 將在沒有動態要求的變體中被選擇(參見 https://github.com/winstonjs/winston/issues/984).

2) a dependency has a dynamic require statement that Webpack cannot handle; you can either configure webpack so it can ignore this specific case, or also upgrade winston to a newer version, so color.js will be picked in a variant without that dynamic require (see https://github.com/winstonjs/winston/issues/984).

要告訴 Webpack 與動態 require 相處,你需要告訴 Webpack Winston 是一個外部庫.

To tell Webpack to get along with the dynamic require, you need to tell Webpack that Winston is an external library.

這是我的 webpack.config.js 中的一個示例:

Here's an example from my webpack.config.js:

 externals: {
    'electron': 'require("electron")',
    'net': 'require("net")',
    'remote': 'require("remote")',
    'shell': 'require("shell")',
    'app': 'require("app")',
    'ipc': 'require("ipc")',
    'fs': 'require("fs")',
    'buffer': 'require("buffer")',
    'winston': 'require("winston")',
    'system': '{}',
    'file': '{}'
},

要使用電子使記錄器在 Angular 2 應用程序中可用,請創建一個 logger.js 文件,然后用全局日志記錄服務 TypeScript 文件(即 logging.service.ts)包裝它.logger.js 文件使用所需的 Winston 配置設置創建 logger 變量.

To make the logger available in an angular 2 app using electron, create a logger.js file and then wrap it with a global logging service TypeScript file (i.e. logging.service.ts). The logger.js file creates the logger variable with the desired Winston configuration settings.

logger.js:

    var winston = require( 'winston' ),
    fs = require( 'fs' ),
    logDir = 'log', // Or read from a configuration
    env = process.env.NODE_ENV || 'development',
    logger;
?


     winston.setLevels( winston.config.npm.levels );
    winston.addColors( winston.config.npm.colors );

    if ( !fs.existsSync( logDir ) ) {
        // Create the directory if it does not exist
        fs.mkdirSync( logDir );
    }
    logger = new( winston.Logger )( {
        transports: [
            new winston.transports.Console( {
                level: 'warn', // Only write logs of warn level or higher
                colorize: true
            } ),
            new winston.transports.File( {
                level: env === 'development' ? 'debug' : 'info',
                filename: logDir + '/logs.log',
                maxsize: 1024 * 1024 * 10 // 10MB
            } )
        ],
        exceptionHandlers: [
            new winston.transports.File( {
                filename: 'log/exceptions.log'
            } )
        ]
    } );
    ?
    module.exports = logger;

logging.service.ts:

logging.service.ts:

export var LoggerService = require('./logger.js');

現在日志服務可以在整個應用程序中使用.

Now the logging service is available for use throughout the application.

例子:

import {LoggerService} from '<path>';
...    
LoggerService.log('info', 'Login successful for user ' + this.user.email);

這篇關于如何讓 Winston 使用 Webpack?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How to fix BrowserWindow is not a constructor error when creating child window in Electron renderer process(在 Electron 渲染器進程中創建子窗口時如何修復 BrowserWindow 不是構造函數錯誤) - IT屋-程序員軟件開發技術
mainWindow.loadURL(quot;https://localhost:3000/quot;) show white screen on Electron app(mainWindow.loadURL(https://localhost:3000/) 在 Electron 應用程序上顯示白屏)
Electron webContents executeJavaScript : Cannot execute script on second on loadURL(Electron webContents executeJavaScript:無法在第二個 loadURL 上執行腳本)
how to use electron browser window inside components in angular-cli?(如何在angular-cli的組件內使用電子瀏覽器窗口?)
ElectronJS - sharing redux store between windows?(ElectronJS - 在 Windows 之間共享 redux 存儲?)
How to access camera/webcamera inside electron app?(如何在電子應用程序中訪問相機/網絡攝像頭?)
主站蜘蛛池模板: 18成人在线观看 | 91精品国产日韩91久久久久久 | 日韩精品无码一区二区三区 | 欧美一区二区黄 | 一区二区三区国产精品 | 国产你懂的在线观看 | 国产欧美久久一区二区三区 | 午夜免费在线电影 | 日韩久久久久久 | 精品一区av| 九色av| 欧美成人免费电影 | 中文字幕第十一页 | 欧美日韩久久久 | 日韩aⅴ视频 | 国产欧美日韩一区 | 精品视频免费 | 免费观看一级毛片 | 日韩精品一区二区三区免费观看 | 成人黄色在线观看 | 久久大陆 | www.99热.com| 日韩精品久久久久 | 国产精品高潮呻吟久久av野狼 | 一区视频| 亚洲精品一 | 日韩1区 | 欧美成人自拍视频 | 久久国产精品视频 | 激情91| 精品亚洲一区二区三区四区五区 | 中文字幕一区二区三区四区五区 | 国产日韩欧美 | 中文成人在线 | 国产精品一二三区 | 天天综合网7799精品 | 日本一二区视频 | 亚洲欧美综合 | 欧美成人精品一区二区男人看 | 欧美一级视频免费看 | 久久精品色视频 |