geeeeeeeeek / electronic-wechat

:speech_balloon: A better WeChat on macOS and Linux. Built with Electron by Zhongyi Tong.
MIT License
13.93k stars 2.72k forks source link

no such file or directory, open '*/trayConfig.json' #359

Open nich0lasfung opened 8 years ago

nich0lasfung commented 8 years ago

Description

npm install无法正常安装 legacy模式可以安装(v1.3也是这样才能安装) 启动时弹出窗口,提示如下, 点确定后正常启动

Specifications


A JavaScript error occurred in the main process
Uncaught Exception:
Error:ENOENT:no such file or directory,onpen'/home/XXXX/.config/electronic-wechat/trayConfig.json' at Error(native)
kidoflamancha commented 8 years ago

同问, opensuse下编译安装也是这个问题 nodejs4

nich0lasfung commented 8 years ago

@kidoflamancha 已解决 把electronic wechat文件夹删除再重新用npm install进行编译就不会报错,

liu-dongyu commented 8 years ago

@nich0lasfung 我也有这个问题,没看懂你是怎么解决的?能再说说么.

nich0lasfung commented 8 years ago

@liu-dongyu 把git clone下来的文件夹删除,然后重新git clone,重新编译一次, 我第一次的时候npm install会报错,用npm -legacy install才能编译,第二次的时候直接npm install没有报错,

wanicca commented 8 years ago

同,但是我编译后启动会卡在loading界面。

nich0lasfung commented 8 years ago

@wanicca 前面的一些issue里说过,卡loading界面是网络问题,我以前也偶尔有过,关闭重开就好了

rocka commented 8 years ago

看这个报错路径似乎是我加入的代码的问题。。。 把 ~/.config/electronic-wechat 这个目录删掉可以重现问题么? 不过在我自己测试的时候没有出现过这种问题

nich0lasfung commented 8 years ago

@Rocket1184 不清楚...因为我后来删除,然后重新编译以后就没有报错了,另外我在源码中也没有找到trayConfig.json,所以没有办法复现问题..

jeffycai commented 8 years ago

内部更新,如何测试。

Kulbear commented 8 years ago

@jeffycai 什么叫内部更新。。

Nomia commented 8 years ago

问题还是存在,我npm install 没有任何问题,但是npm start就会报如下的错误,关闭错误后,能够正常运行。 image

环境: node: 6.7.0 npm: 3.10.3 centos desktop

.config下面并不存在electron-wechat文件夹

Nomia commented 8 years ago

windows , mac 下都没有这个问题,

centos, ubuntu会有这个问题

y9c commented 7 years ago

我自己修好了, ubuntu 下面

mkdir -p ~/.config/electronic-wechat
touch ~/.config/electronic-wechat/trayConfig.json
Nomia commented 7 years ago

你好 @yech1990 , 看了你的命令行,第一句是创建一个夹子,第二句请问是干嘛?也就是下面代码块中的命令是什么意思?自己创建一个json文件么? ~/.config/electronic-wechat/trayConfig.json

nich0lasfung commented 7 years ago

@Nomia 第二句是承接第一句的命令mkdir的,所以实际上是自己创建两个空文件,表面上看是没有报错,实际上只是通过了检测json文件的步骤。在使用过程中,如果有调用到json文件的地方,应该还是会报错的,因为json文件是空文件 @yech1990 PS:以上只是个人粗浅的看法,因为没有解包看详细的代码,所以目前还不能确认json文件的用途。

y9c commented 7 years ago

@Nomia @nich0lasfung 这个应该是托盘的配置文件,每次触发托盘的时候会调用这个配置文件。 我试过是不会影响到托盘的功能的,至于底层的东西就没细看了。 image

rocka commented 7 years ago

哎。。。没想到搞一个托盘图标颜色切换会产生这么多麻烦。。。但我自己的环境里面, ~/.config/electronic-wechat 文件夹和 trayConfig.json 都是会在不存在时自动创建的啊 = = (Ubuntu 16.04.1) @nich0lasfung 我实现这个功能的时候,如果读到配置文件为空,就会自动写入默认配置内容

Kulbear commented 7 years ago

@Rocket1184 其实我也很奇怪 我也看到了那个写入默认配置的代码。。。

Kulbear commented 7 years ago

@Rocket1184 突然想起前几天在别的项目里遇到的,

有一些系统环境不允许你创建文件夹,比如如果你建立 ~/myfile.json 就没问题 但是如果你是建立 ~/folderName/myfile.json 就不行。 有可能是这个问题?

rocka commented 7 years ago

@Kulbear electron似乎会在启动的时候自己创建appData文件夹的吧,然后我只是在里面新建一个文件 参见-> http://electron.atom.io/docs/api/app/#appgetpathname ~/.config/electronic-wechat这个文件夹也应该是自动创建的才对啊

Kulbear commented 7 years ago

@Rocket1184 因为我也存了本地配置然后丑陋的直接放在了HomeDir 就没遇到这个问题 稍后我看一下

hackjutsu commented 7 years ago

一个暂时的workaround,新建一个空的trayConfig.json依然报错,需要内容格式符合JSON要求。

mkdir -p ~/.config/electronic-wechat
echo "{}" > ~/.config/electronic-wechat/trayConfig.json
Kulbear commented 7 years ago

@hackjutsu 空的json报错很正常 因为空文件并不是有效的JSON,很简单的方法就是删了让它自己自动生成就可以了。

hackjutsu commented 7 years ago

@Kulbear 我在Ubuntu 16.0.4上跑的时候(production branch) 没有观察到文件自动生成,所以自己新建立一个。

前面yech1990提到的方法里是建立一个空文件,这会导致json读取错误。

rocka commented 7 years ago

@nich0lasfung @kidoflamancha @liu-dongyu @wanicca @Nomia @hackjutsu

出现这个问题的各位,你们是直接用二进制包的,还是自己 npm run build:linux ,或者直接在目录里面 npm start 的?

如果是用 npm start ,应用不会自己建立 ~/.config/elctronic-wechat 文件夹,而是直接用的 ~/.config/Electron,所以会出现找不到文件的错误

我想应该是这样的

Kulbear commented 7 years ago

@Rocket1184 这真是一个历史悠久的。。。bug 不过似乎解释了为啥我创建的配置文件没啥问题。。因为我是手动在HOME。。。 之后咱们整合一下吧

rocka commented 7 years ago

@Kulbear 那我们之后统一存在 HOME ,或者放在 ~/.config 下面,还是别的地方? 或许需要在 README 说明一下配置文件保存位置,免得被误删了

hackjutsu commented 7 years ago

@Rocket1184 不是很记得了,应该是选用最简单的方法,即npm start

Kulbear commented 7 years ago

@Rocket1184 HOME 存一个 .ewconfig 之类的文件吧 最近比较忙没太管这里。

hackjutsu commented 7 years ago

如果找不到该文件,可不可以降级为内部的warning,而不是报错呢?