Deno中含#符号的文件无法被import导入问题
问题原因及解决办法
这事儿本质是URL规则和文件名的冲突:#在URL里是片段标识符(锚点),Deno的模块导入是按URL逻辑解析路径的,碰到文件名里的#,会直接把它当成URL片段的起始,不会把#及后面的内容当成文件名的一部分,自然找不到文件。
至于Deno.stat能正常识别,是因为它直接调用Windows的文件系统API,Windows本身允许文件名带#,所以能读出来——这俩完全是不同的逻辑通道,一个走URL解析,一个走本地文件系统调用。
可行的解决方式:
- 优先选这个:直接重命名文件,把#去掉(比如改成
asd.js),简单粗暴没隐患。 - 非要保留#的话:用URL编码后的路径导入,把#换成
%23,比如:
不过这种写法比较麻烦,除非有特殊需求,不然不推荐。// 绝对路径示例 import 'file:///C:/你的项目目录/qwe/asd%23.js'; // 相对路径用URL构造器 import new URL('./qwe/asd#.js', import.meta.url).href;
另外你说的}被转成%7D就是控制台的编码显示问题,和核心的导入失败没关系,不用管它。
内容的提问来源于stack exchange,提问作者Товарищ Понечка
相关产品推荐
相关产品推荐

