系统环境是mac 环境,python版本是2.7,当使用HTML-CSS-JS-Prettify 格式化代码的时候出现下面的错误:
Using node.js path on 'osx': /usr/local/bin/node
Unexpected error(<type 'exceptions.AttributeError'>): 'module' object has no attribute 'getoutput'
error: You won't be able to use this plugin without specifying the path to node.js.
Traceback (most recent call last):
File "./sublime_plugin.py", line 362, in run_
File "./HTMLPrettify.py", line 48, in run
File "./HTMLPrettify.py", line 110, in get_output_diagnostics
AttributeError: 'NoneType' object has no attribute 'find'
之前也查了些资料,已经做了下面的修改,并且项目路径也没有中文名称
PluginUtils.get_node_path() 成为PluginUtils.get_node_path().encode("utf-8")
有没有人遇到过同样的问题
我也遇到了这个问题,我的报错跟你一样:
目前还不知道哪里的问题,因为之前这个插件都工作正常的,但是我在安装sublime3之后,就出现这个问题了,不知道是不是两个sublime版本导致的
经过一个下午的排查,已经解决了此问题,但是可能方法并不是特别规范。
我先说下排查经过:
首先,查看sublime的调试输出是通过Ctrl+`下的console的,在使用HTML-CSS-JS Prettify的时候,得到报错:
可能很多人被错误提示误导,以为是node没有安装,但是我本地的node地址确实是/usr/local/bin/node,此错误提示并不准确:
node本身并没有错,然后我们查看console中的输出:
对于以上的报错,我一直是着眼于这个错误:
我觉得这是最大的问题,我一直是把这个作为线索去寻找的!
而主要的排查位置,我们应该确定在提示的HTMLPrettify.py中,这个文件在我本地的绝对位置是:
/Users/andy/Library/Application Support/Sublime Text 2/Packages/HTML-CSS-JS Prettify/HTMLPrettify.py
主要的报错原因,是因为在第200行,
commands.getoutput(run)
的时候,commands其实并没有实际导入。
我本地python的commands是正常的:
(我在本地编写python脚本import commands都是正常的,所以对于为什么没有导入,这个问题的原因还是不清楚),我在HTMLPrettify.py的源码第200行之前打印commands,结果是这样:
<module 'commands' from './commands.pyc'>
可以看到,插件需要获取的commands是从自己的当前目录获取的,而当前目录并没有这个文件,所以才导致了后面报出的'module' object has no attribute 'getoutput'错误,那怎么解决呢?最笨的办法,当然就是copy一份正确的commands.py到本地了。
我本地有好几个commands.py,这里我们选择2.7版本即可:
copy之:
之后再次使用插件,console输出:
没有再报错,并且文件被成功Prettify,问题解决 :-)
但是,我的HTML-CSS-JS Prettify插件一直使用没有出过问题,这次出现问题的原因还是不清楚,可能跟我前段时间在本地安装了Sublime3有关系吧,至于为什么commands没有正常import,这个的原因也没有确定。希望有了解的朋友可以继续解答这个问题!
现在是第二天上午,我打开电脑发现(我并没有关机):
/Users/andy/Library/Application Support/Sublime Text 2/Packages/HTML-CSS-JS Prettify/
目录下的commands.py文件已经不见了,但是之前的报错也不见了,很诡异啊~~~