我发现浏览器有一个很离谱的 BUG,我不知道它是出于什么原因

import { a } from "http:/127.0.0.1:8000/test.mjs";
console.log(a);

这个协议头不规范,居然能宽容地正确解析出来。
也就意味着在浏览器中,new URL("https:/qaq.dweb/index.ts") 能被合法解析成 new URL("https://qaq.dweb/index.ts"):

这个 bug,可以带来一个玩法。我可以利用这个 bug,用 node 实现类似 deno 的功能。因为 deno 近乎是完全使用浏览器的标准,所以说浏览器上面的这个 bug,在 deno 中同样也会有,也同样适用……
在 nodejs 项目里,只需要在 node_modules 里头创建一个 https: 的文件夹。它完全不会报错,可以正确解析。

比如说以下 deno 代码:

import { Server } from "https:/deno.land/std@0.187.0/http/server.ts"; // 这里使用单斜杆,也会被认为是双斜杠

然后同样的代码,在 nodejs 项目中,不启用 deno,只添加一个 tsconfig.json,使用 ts5+ 来实现 .ts 文件后缀的支持

// tsconfig.json
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "allowImportingTsExtensions": true,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true
  }
}

最终效果如下图: