nodemon 监听 node 服务,有个打开浏览器的动作,导致每次都打开浏览器新标签.只想打开一次

2016-10-21 10:50:51 +08:00
 Chanran

我在用 nodemon 来 watch node 服务,代码里调用了自动在浏览器打开项目的方法,导致每次 ctrl+s 的时候都打开新标签页

我想到的解决办法:

  1. watch node 服务的时候不打开新的浏览器标签页;(这不是我想要的)
  2. 在服务外设置一个标志,以表示是第几次启动服务;(可行,但是不太合理)
  3. 监听进程(好像行不通,因为 pm2 每次都重启了 node 服务,进程都没了)
  4. 监听浏览器子进程(太复杂)

求解决方法(在公司里有个构建工具是可以实现的,但是现在看不到源码了,只能求助)

回归正题:这是我提交给 node-open 作者的 issue

作者好像不鸟我们,求帮忙解决一下

4065 次点击
所在节点    Node.js
7 条回复
4641585
2016-10-21 11:23:34 +08:00
如何判断这次保存时你是想打开新标签页还是不想打开新标签页?
Chanran
2016-10-21 11:28:24 +08:00
@4641585 不想打开新标签页.也就是说,第一次用 nodemon 启动 node 服务的时候打开,然后 ctrl+s 的时候不要打开新的标签页了,只启动 node 服务
jinwyp
2016-10-21 13:14:06 +08:00
直接用 nodemon 不就好了吗? nodemon app.js
4641585
2016-10-21 14:03:44 +08:00
@Chanran

我有个不成熟的想法不知道适不适合:

1 、使用 pre- 钩子来打开标签页
2 、源代码当中打开浏览器的动作改成刷新页面

"scripts": {
"predev": open xxx,
"dev": "nodemon app.js"
}

这样 npm run dev 的时候先打开了标签页,然后运行代码时刷新页面,每次进行保存也只是触发刷新页面的动作。
ETiV
2016-10-21 14:36:38 +08:00
网页上在调用 window.open 的时候接受一个 target (就是 a 的 target 属性)

如果前后两次调用传入了同一个名字,就会在相同的网页标签下打开。

不知道 Chrome 、 Firefox 等等浏览器是否支持命令行传入这个参数,支持的话这个问题就好办了
Chanran
2016-10-22 10:53:40 +08:00
@jinwyp 你用一下 open 这个 npm 依赖就知道了,nodemon app.js, app.js 里有一段代码是打开浏览器标签页,nodemon 每次启动 app.js,都会触发这个动作....那就无解了
Chanran
2016-10-22 10:57:01 +08:00
@4641585 额,这就是比手动在浏览器打开标签好了一点.但是这里面也有个问题,我是 open('http://'+IP+':'+PORT)这样打开的...所以在 package.json 写不好...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/314344

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX