Problem polega na tym, że pakiet Webpack nie obsługuje instrukcji dynamicznej require w pliku colors.js. Musisz więc powiedzieć Webpackowi, że Winston jest biblioteką zewnętrzną.
Oto przykład z moich 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': '{}'
},
Aby rejestrator dostępny w 2 kątowym aplikacji za pomocą elektronów, utwórz plik logger.js a następnie owinąć go z globalną usługę rejestrowania Plik TypeScript (tj. Logging.service.ts). Plik logger.js tworzy zmienną rejestratora z żądanymi ustawieniami konfiguracyjnymi Winston.
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:
export var LoggerService = require('./logger.js');
Teraz usługa rejestrowania dostępne do użytku w całej aplikacji jest.
przykład:
import {LoggerService} from '<path>';
...
LoggerService.log('info', 'Login successful for user ' + this.user.email);
nie może używać tej metody, a ja za pomocą skośnych cli zamiast WebPacka sama w sobie i nie dostęp do WebPACK konfiguracji. – invisible
@invisible można przezwyciężyć pakiet internetowy, wykonując polecenie wysunięcia, które wygeneruje plik webpack.conf.js. Kiedy zrobiłem to przy powyższej konfiguracji, webpack dał błędy kompilacji, ponieważ nie był w stanie znaleźć rejestratora w pliku logger.service.ts. – patz