云笔记开发记录二:node-webkit 如何启动 express(更准确说是MEANJS) 项目?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云笔记开发记录二:node-webkit 如何启动 express(更准确说是MEANJS) 项目?相关的知识,希望对你有一定的参考价值。

node-webkit 如何启动 express(更准确说是MEANJS) 项目?

一般网上都是教你node-webkit从一个html文件启动起来的~当我们是用一个express项目让node-webkit启动的话,就很少有人写到过~ 

所以,我将在这里记下我是如何让node-webkit启动一个express服务的!

参考官方资料: 
https://github.com/nwjs/nw.js/wiki/NW.js-use-express-and-similar-web-frameworks

从官方文档来看,貌似只需要将 main 属性配置成一个url, node-main 配置成express服务启动的脚本就行了~ 
代码如下所示:

{
 ...
    "node-main":"./app/server.js",
    "main": "http://localhost:3000",
 ...
}

上面的代码是node-webkit项目的 package.json文件(不是node的package.json),其中 node-main 是我们 express 的启动脚本,main是我们启动express后,node-webkit将会访问的第一个页面。

 

恩,这样子配置完是不是就可以了呢? 
我们试着启动一下~我们就会发现,服务并没启动!!! 

技术分享

奇怪~服务怎么没启动起来呢? 
我们试着用终端来启动下该express项目,看看是不是express项目配置有问题导致的。 
如下图: 

技术分享

居然报错说没找到 E:\\webstormWorkspace\\cnote\\config\\assets\\default 模块~ 
仔细的看了下上面报错的路径地址~咦? 
技术分享

 

我的路径不应该是:E:\\webstormWorkspace\\cnote \\app \\config\\assets\\default ? 

技术分享

路径中怎么会少了app该目录呢? 
突然想起来,当node-webkit启动我的cnote项目的时候,它是从cnote目录开始的,那么nodejs的全局process.cwd()返回的工作目录地址就是E:\\webstormWorkspace\\cnote;然后,我们看下刚才报错的文件,发现该文件使用了很多 process.cwd()

 技术分享

 

上图中某部分代码:path.join(process.cwd(), ‘modules/*/client/‘),因为我现在可以知道,我们当前的cnote项目中的全局 process.cwd() 返回的结果是:E:\\webstormWorkspace\\cnote,而不是 E:\\webstormWorkspace\\cnote\\app,所以,导致那些引入的文件路径都错了~ 
既然知道了问题,那我们就找方法解决这个问题。 
全局对象 process 提供了process.chdir(directory),这个方法将会改变我们项目的当前工作目录,也就是说我们跟nodejs说:“嘿,我们的工作目录不是那个,是这个…~”。

process 参考资料: 
https://nodejs.org/api/process.html#process_process_chdir_directory

我们只需要在调用process.cwd()方法前,用process.chdir(directory)将当前工作目录修改~ 
如: 

技术分享

 

然后,我们再次执行下startCnote.bat脚本, 

技术分享

 

发现服务正常启动了~

技术分享

 

 













以上是关于云笔记开发记录二:node-webkit 如何启动 express(更准确说是MEANJS) 项目?的主要内容,如果未能解决你的问题,请参考以下文章

node-webkit 笔记

Node-Webkit(nwjs)如何将窗口向右对齐?

Node-Webkit - 启动最大化

node-webkit:开发桌面+WEB混合型应用的神器

.NET 云原生架构师训练营(基于 OP Storming 和 Actor 的大型分布式架构二)--学习笔记...

怎么自定义 node-webkit 通知的 标题 和 图标