博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nodejs安装jsdom模块出现MSB4025错误
阅读量:6866 次
发布时间:2019-06-26

本文共 1394 字,大约阅读时间需要 4 分钟。

hot3.png

    在安装jsdom模块的过程中遇到这么一个MSB4025错误:(win8.1 下,已经安装了vs2013 for desktop express版)

error MSB4025: 未能加载项目文件,给定编码中的字符无效

    在网上查了一些资料,说是因为编码的问题,因为在windows下使用,用户名是中文,导致在生成vcxproj文件时,有些依赖路径里包含了中文字符。好吧,我承认我安装模块的路径的确是包含中文名称......

    windows下的中文默认用的是GBK编码,而vcxproj文件默认的编码方式是utf-8。node的gyp工具,并没有很好的处理多语言编码的问题。这样导致生成的vcxproj文件是ANSI编码,内部的中文字符是GBK编码,等到调用VS 2013编译模块时,就会导致VS2013无法正确使用vcxproj文件,导致编译安装失败。

nodejs的gyp工具使用的python,在安装目录下可以找到gyp相关的python代码,修改其中用于生成vcxproj的代码,使其用utf-8编码生成文件内容并存储,即可解决此问题。

    网上找到资料说是修改 C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp>下的 easy_xml.py文件(这里的 ‘C:\Program Files (x86)\nodejs’指的是本人nodejs的安装路径,实际操作中要换成对应的路径,一般是‘C:\Program Files\nodejs‘)

    找到 “# It has changed, write it”这一行,将下面的判断代码修改,原来是:

# It has changed, write it  if existing != xml_string:    f = open(path, 'w' ,'utf_8_sig')    f.write(xml_string)    f.close()

    换成下面的代码:
# It has changed, write it  if existing != xml_string:    if path.endswith('vcxproj'):      #use utf_8 encoding to generate vcxproj file      f = codecs.open(path, 'w', 'utf_8_sig')      #convert GBK string to Unicode string to ensure the later utf_8 encoding      f.write(xml_string.decode('gbk'))    else:      f = open(path, 'w')      f.write(xml_string)    f.close()

    值得注意的是,代码中使用到了“codecs.open”,所以要再开头处引入codecs,要不然会报错说变量找不到,在开头处加上:
import codecs

    完成后保存,在运行一下安装jsdom的命令,发现已成功安装。

 

 

 

转载于:https://my.oschina.net/tearlight/blog/279797

你可能感兴趣的文章
【硬创邦】跟hoowa学做智能路由(二):从芯片开始
查看>>
扫脸付、VR付实现了, “KongFu”空付还远吗?
查看>>
2016网络安全威胁四大趋势:人才全球缺货
查看>>
福布斯:云计算有人气 但未到最佳状态
查看>>
虚拟化的逆袭:OpenFlow和SDN
查看>>
俄罗斯组织机构被网络间谍定向攻击
查看>>
英特尔AI CTO:人工智能训练需要新型芯片架构
查看>>
小米为什么把智能家居定义为“轻智能”?
查看>>
向DevOps环境过渡?别犯这四种错误
查看>>
从上菜太慢,谈事件管理、流程管理、数据管理
查看>>
再论基于ARM芯片的Mac 这真是你想要的?
查看>>
告别卸载软件难 四大方法轻松搞定
查看>>
看“风水反转”技术如何危害云安全
查看>>
大数据产业发展提速 500亿蛋糕待挖掘
查看>>
插画师自述:类似PaintsChainer 这样的人工智能上色网站,未来会取代我们吗?...
查看>>
摩尔定律时代即将落幕
查看>>
北京银行首席信息官王健出任副行长
查看>>
用好“数据”这笔大资产
查看>>
中国智慧城市创新大会连续三年花落沈阳
查看>>
《Scala机器学习》一一3.2 理解Spark的架构
查看>>