当前位置: 首页 > 科技观察

Node.js v17.6.0 发布,允许从 HTTP 和 HTTPS URL 导入模块

时间:2023-03-20 01:32:48 科技观察

Node.jsv17.6.0发布,允许从HTTP和HTTPSURL导入模块还包括很多问题,包括安全方面的考虑,目前对Node.js的使用仍然有一些限制,以及其他一些一般性的小错误修复.允许从HTTP和HTTPSURL导入模块Node.jsv17.6.0中的一个新实验性功能是允许我们从HTTP或HTTPSURL导入ES模块。这也允许在Node.js中完成一些事情,例如Web浏览器导入,并且还消除了Node.js和Deno之间的一些差异,即Deno允许使用HTTPS导入包。因为一些安全和稳定性问题还是和浏览器有些区别。下面是一个导入HTTP资源的简单示例,此功能现在是实验性的,需要使用flag运行。--experimental-network-imports//hello.mjsexport默认函数hello(message){console.log(`Hello${message}`);}$http-server正在启动http-server,服务./Availableon:http://127.0.0.1:8080//index.mjsimporthellofrom'http://127.0.0.1:8080/hello.mjs';console.log(你好('codingMay'));//你好codingMay目前不是所有的ESModule都能加载。下面两个例子中,虽然第一个加载的是HTTPS资源,但不是HTTP/1。示例2导入非网络相关资源。//示例1:加载HTTPS资源importhellofrom'https://gitee.com/qufei1993/esmodule-https-import-example/blob/master/hello.mjs';console.log(你好('codingMay'));输出错误:RangeError[ERR_UNKNOWN_MODULE_FORMAT]:Unknownmoduleformat:nullforURLhttps://gitee.com/qufei1993/esmodule-https-import-example/blob/master/hello.mjs//Example2:Loadingothernon-networkresources//hello.mjsimportfsPromisefrom'fs/promises';exportconstreadFile=filename=>fsPromise.readFile(filename);//index.mjsimporthellofrom'http://127.0.0.1:8080/hello.mjs';outputError:TypeError[ERR_INVALID_URL_SCHEME]:TheURLmustbeofschemefile对HTTP和HTTPS导入的一些限制:只支持HTTP/1,不支持HTTP2/HTTP3。HTTP仅限于环回地址。身份验证不会发送到服务器,例如Authorization、Cookie和Proxy-Authorization标头不会发送到服务。永远不会在目标服务器上检查CORS。无法加载非网络依赖项。基于网络的加载默认情况下不启用,需要通过标志打开才能加载HTTP或HTTPS资源。--experimental-network-importsProcess获取活动处理程序和请求方法弃用通知此更改主要记录和弃用通知以支持更好的公共API。_getActiveHandles_getActiveRequests这两个以下划线开头的API被Node.jsv17.3.0中添加的公共API方法替换。此方法返回事件循环活动状态的资源类型。process.getActiveResourcesInfo()从'process'导入{getActiveResourcesInfo};从'http'导入{createServer};console.log('Before:',getActiveResourcesInfo());//之前:['CloseReq','TTYWrap','TTYWrap','TTYWrap']setTimeout(()=>{console.log('After:',getActiveResourcesInfo());//之后:['TTYWrap','TTYWrap','TTYWrap','TCPServerWrap','超时']},5000);createServer((req,res)=>res.end('OK')).listen(3000);其他一些升级项目流程:恢复地图规范合规性。构建:删除损坏的x32arch支持。fetch:启用fetch()时,全局对象添加FormData。--experimental-fetchfs:cp和cpSync支持相对链接复制。处理:丢弃多个解决。部门:将npm更新到8.5.1。

最新推荐
猜你喜欢