- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们有一个代码库(React.js 和 Hapi.js)。基于该代码库,我们有该应用程序的两个版本。一个是普通的Web应用程序,另一个是Nodewebkit(桌面)版本:
本质上应用程序是相同的,只是略有差异。比如网页版有用户(登录)管理,而桌面版没有。 Web 版本使用 MySQL,而桌面版本使用 Sqlite。还有更多差异,但与问题无关:)
我们面临的问题是如何为 Nodewebkit 版本制作合适的记录器。在网页版本中,我们为 Hapi.js 实现了 Good-console。事情是这样的:
var options = {
ops: {
interval: 1000
},
reporters: config.loggers
};
models.sequelize.sync(/*{force: true}*/).then(function(){
server.register({
register: require('good'),
options: options
}, (err) =>{
if(err) {
console.error(err);
} else {
server.start(() =>{
console.info('Server started at ' + server.info.uri);
});
}
});
稍后在代码中它被用作:
}).catch(function (err) {
request.server.log(['error'], err.stack);
response({isError: true, message: 'Could not retrieve connection information'}).code(200);
});
效果正如预期的那样。
我们面临的问题是如何在 Nodewebkit 环境中包含相同的日志记录工具。通常,由于我们使用相同的代码库,日志调用也应该相同。应用程序中的所有文件都是相同的,除了index.js。我们有两个版本,一个用于启动 NW.js,另一个用于正常的 Web 启动。
如果我们在 NW.js 启动文件中使用 Good-console 初始化代码(适用于 Web 版本),则不会发生任何情况。服务器未启动,也没有错误。我已将良好控制台使用的 Node 模块转换为 ECMA5,因为 NW.js 引擎未运行 ECMA6,但同样没有任何反应。
早些时候,我们为 NW.js 版本实现了一个简单的记录器。仅在启动期间使用,其内容如下:
log4js = require('log4js');
log4js.configure({
appenders: [
{ type: 'console' },
{ type: 'file', filename: 'logs/project.log', category: 'projects' }
]
});
logger = log4js.getLogger('projects');
logger.setLevel('ERROR');
logger.setLevel('INFO');
server.route(require('./server/config/routes'));
models.sequelize.sync({/*force: true*/}).then(function () {
server.start(function () {
logger.info('Nodeweb kit Fun is Started :).');
});
});
技巧是如何使用相同的记录器调用,而不用代码中的“if”或类似技巧来感染代码。澄清问题:
良好的控制台代码:
request.server.log(['error'], err.stack);
request.server.log(['error'], err.stack);
log4js代码:
logger.info('Nodeweb kit Fun is Started :).');
是否可以将 log4js 函数附加(当 NW 版本启动时)到 request.server,这样代码就无法识别登录功能?
或者其他一些想法非常值得赞赏。
最佳答案
我已经设法使用相同的代码来登录两个版本。只是在 NW 版本中我已经安装了 hapi-logger插件。
两个插件现在使用相同的函数签名:
request.server.log(['error'], err.stack);
关于javascript - 在Nodewebkit环境中使用logger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39161447/
我有一个适用于 Web 和 NodeWebkit (NW) 应用程序的代码库。我使用以下堆栈:- react - 哈皮- 续集- Windows环境 Web 版本的应用程序使用 MySQL,而 NW
我正在使用 angularjs 和 node webkit 开发一个应用程序(现在在 Windows 上,但我也想有一个 mac 版本)。 碰巧我的应用程序崩溃了,但我不知道为什么。所以我想我应该检查
如果我可以在浏览器和 node-webkit 中运行相同的 javascript 而没有任何错误,那就太好了。但我还想添加特定于任一平台的功能,例如在 node-webkit 版本中“按 Esc 退出
我尝试使用 Node-Webkit 和 AngularJS 制作一个独立的 Web 应用程序。 我遵循 AngularJS.org 教程,但在尝试创建 Angular 模块时遇到错误。 Error:
我目前正在开发一个特别敏感的桌面应用程序,它是用 NodeWebkit 编写的。 NW windows 似乎带有一些默认的网络浏览器键盘快捷键(如 Backspace 或 F5)。出于安全原因,我不允
我目前正在构建一个 Node webkit 桌面应用程序,Chat 实现了它。 如果有来自用户的任何新消息,它应该在窗口停靠栏上方类似于 Skype 进行通知,并在单击它时应打开应用程序。 我浏览了一
我正在做一个简单的 nodewebkit 项目,我想用一个远程数据库来做这件事。 远程连接到 sql server 的最佳和最安全的方法是什么? 我已经查过了node-mysql和类似的解决方案,但将
我正在尝试在 Webstorm 中打开 NW,以便可以开始调试。当我在应用程序中出现错误时,NW 窗口就会关闭,没有任何提示为什么会发生这种情况。 我找到了这个article在网络 Storm 网站上
我正在全屏模式下使用 nodewebkit 开发我的网络应用程序。 它必须与触摸屏显示器一起使用。 我使用了 CSS 属性: html * { cursor: none; } 在nodewebki
在我的本地服务器上执行此操作时,这在 Chrome 中有效。但是,当我转移到 NodeWebkit 时,它失败了,状态 === 0。 function ReadText(filename) {
我正在创建一个使用几乎相同代码库的应用程序。我们仍处于决策阶段,事情可能会发生变化。到目前为止,我们计划在桌面版中使用 Sqlite,而在服务器版中我们计划使用 MsSQL。 理想情况下,双方都使用一
我的应用程序已准备好分发,并且我决定要使用 NodeWebkit。现在的问题是我的应用程序加载本地文件,我需要一个网络服务器。如何将 NodeWebkit 和某些 Web 服务器打包在一起?如果无法将
我正在尝试使用 NodeWebkit 创建一个应用程序。我正在使用 node-phantom-simple 模块抓取内容。使用该模块,我能够从网站上抓取内容。但我应该如何在 html 端访问它。我认为
我正在尝试构建一个使用 Soundcloud API 的 NodeWebkit 应用程序。 但是我已经在连接/登录过程中失败了。 在 NodeWebkit 中,用户可以将应用程序安装在他硬盘上的任何位
我有一个带有这个 package.json 的 nw.js 应用程序: { "main": "index.html", "name": "test_app", "window": {
我已经使用我的 NW 应用程序几个星期了,现在没有任何问题。我开始将其他同事带入我的 repo 进行测试,我决定编写一个安装脚本而不是强制他们手动安装依赖项。今天,在运行安装脚本进行测试后,我尝试运行
我是一名优秀的程序员,十分优秀!