url.parse在Windows下为基于“ file:///”的URL生成了错误的路径名

时间:2018-11-06 07:09:24

标签: javascript node.js

这是有问题的代码:

form_with

它产生:

/c:/Users/avo/test.txt
\c:\Users\avo\test.txt

import re html='<tr>'\ '<td class="table-basic-l">'\ ' Resolution'\ '</td>'\ '<td class="table-basic-l">'\ ' Horizontal Frequency (kHz)'\ '</td>'\ '<td class="table-basic-l">'\ ' Vertical Frequency (Hz)'\ '</td>'\ '</tr>' print(re.sub("<[/]*t.*?>", "", html)) 的格式已按照RFC8089正确设置。为什么会有领先的 success: function(data){ var result = data; $('#dispach_challan_no').html(result.id); }, ,这是一个错误吗?在Windows下,这将导致路径不正确。 如何跨平台获取正确的路径?

在注释中提到 success: function(data){ var result = data; $('#dispach_challan_no').html(result['id']); }, 仍然是正确的路径,但就我而言,它使var url = require("url"); var path = require("path"); var fileUrl = "file:///c:/Users/avo/test.txt" var parsed = url.parse(fileUrl) console.log(parsed.pathname) console.log(path.normalize(parsed.pathname)) 之类的文件系统API在Windows上失败。如果我删除开头的fileUrl,则这些API可以正常工作。

1 个答案:

答案 0 :(得分:0)

不是肯定的答案,而是一种快速的解决方法,因此我可以继续:

var p = path.normalize(parsed.pathname);
p = p.replace(/^\\(\w:)/, "$1");

仍然对NodeJS中url.parse的行为的解释感兴趣。

更新,向Node小组报告了an issue,并获得了使用url.fileURLToPath(url)的宝贵建议,为我解决了这个问题。