Node.js 10.0和NPM 6发布,强化安全性

Node.js 10.0.0版本及npm 6.0版本发布,重点加强安全性,Node.js升级至OpenSSL 1.1.0,npm新增自动安全警告功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

\

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

\
\\

4月24日,Node.js项目发布了10.0.0版本的Node.js,同时npm, Inc发布了node包管理器npm的6.0版本。这两个发布版本都强调了安全性的增强,Node.js升级到了OpenSSL 1.1.0版本,而npm包含了多项聚焦安全的特性,比如对不安全依赖的自动告警。Node.js发布版本还包含了一个新的原生编程API以及对HTTP2的稳定支持。

\\

按照官方关于版本发布的博客文章,“Node.js 10.x主要关注渐进性的增强”,但这也是第一个升级到OpenSSL 1.1.0的Node版本。当这个版本的OpenSSL发布时,它得到了加密专家的赞誉,比如Open Crypto Audit的Kenn White在一条推文中说到:

\\
\

OpenSSL 1.1.0是一个重要的重构:IPv6、EVP、Bignum、核心结构、状态机、协商。添加了CCM、OCB、 ChaCha/Poly、scrypt、BLAKE2。

\
\\

Wikipedia上的版本发布历史可以看到,OpenSSL的1.1.0版本是从2010年发布的1.0版本以来,第一次破坏二进制兼容性的版本,并且升级到了新的ABI(应用二进制接口,Application Binary Interface),这样能够允许Node.js无缝适应后续的更新,包括按照日程五月份发布的OpenSSL 1.1.1,其中会包含对TLS 1.3的支持。

\\

Node.js发布版本还包含了第一个非实验性版本的Node.js API(N-API)。按照发布说明:

\\
\

N-API是一个稳定的模块API,它独立于V8中的变更,允许模块在更新版本的Node.js中运行,而不需要重新编译。

\
\\

新API的意图不仅在于让包含原生(非JavaScript)代码的模块能够健壮地升级V8的版本,它还能允许包含V8之外的其他JavaScript引擎。在最初宣布N-API的博客文章中,来自微软的Arunush Chandra和来自IBM的Michael Dawson认为直接或间接依赖原生API会影响到30%的包,这对于升级Node.js版本来说,是很大的障碍。Chandra和Dawson说到:

\\
\

针对原生模块的下一代、ABI稳定的Node.js API,或者称为N-API,致力于解决这个问题,它的实现方式是为JavaScript VM中的原生API提供一个ABI稳定的抽象层。这样的话,就允许原生模块的作者针对每个平台和架构编译一次,就能将其应用于实现了N-API的任意Node.js版本。对于构建在不同VM的Node.js版本这一点依然能够成立,如Node-ChakraCore

\
\\

这个版本的Node.js还将对http2的支持作为Node.js核心的稳定部分,在Node.js 8版本系列中,这还是一个实验性的特性。内置的支持已经构建在了流行的服务器框架Hapi和Koa中,Express则还需要一些额外的配置。开发人员如果想要了解这些工具的话,可以在Rising Stack的博客上查阅一个快速教程

\\

这个释放版本是10.x发布线的第一个版本,在2018年10月它将成为新的长期服务(Long Term Service,LTS)发布线。LTS通常能够保证支持三年,按照发布日程将会支持到2021年。但是,按照Node.js的发布日程,最近的LTS版本(8.x)会提前过期(2019年12月),这样做是为了和OpenSSL 1.0.2的End-Of-Life保持一致。

\\

新版本的Node.js还包含了错误处理、诊断和性能方面的提升。感兴趣的开发人员可以参考Node.js博客上完整的发布说明,并在项目主页上下载Node.js的发布版本。

\\

为了与Node.js 10的版本发布保持一致,Node包管理器(Node Package Manager,npm)也宣布释放自己的主版本,即6.0版本。新的npm 6.0版本能够用于之前版本的Node.js,也能用于新的Node.js 10.0.0,按照发布说明主要的升级理由在于安全性的增强:

\\
\

不久,npm注册表的每个用户如果使用具有已知安全问题的代码的话,都会收到自动告警。npm将会基于NSP数据库自动检查安装请求,如果代码包含安全漏洞的话,将会返回警告。

\\

另外,npm@6中的新命令“npm audit”不久就能递归分析你的依赖树,以便于识别哪里不安全,这样的话,你就可以将依赖替换为新版本或者寻找一个更安全的依赖来替代它。

\
\\

开发人员可以通过运行npm i -g npm@latest命令升级至最新版本的npm。

\\

查看英文原文Node.js 10.0 and NPM 6 Released with Emphasis on Security

0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js 1 info using npm@10.8.2 2 info using node@v20.18.0 3 silly config load:file:C:\mvn\nvm\v20.18.0\node_modules\npm\npmrc 4 silly config load:file:C:\Users\zzz\.npmrc 5 silly config load:file:C:\Program Files\nodejs\etc\npmrc 6 verbose title npm create vue@latest 7 verbose argv "create" "vue@latest" 8 verbose logfile logs-max:10 dir:C:\Users\zzz\AppData\Local\npm-cache\_logs\2025-07-31T05_52_52_591Z- 9 verbose logfile C:\Users\zzz\AppData\Local\npm-cache\_logs\2025-07-31T05_52_52_591Z-debug-0.log 10 silly logfile start cleaning logs, removing 4 files 11 silly packumentCache heap:2197815296 maxSize:549453824 maxEntrySize:274726912 12 silly logfile done cleaning log files 13 http fetch GET 200 https://registry.npmmirror.com/create-vue 250ms (cache revalidated) 14 silly packumentCache heap:2197815296 maxSize:549453824 maxEntrySize:274726912 15 verbose stack Error: command failed 15 verbose stack at promiseSpawn (C:\mvn\nvm\v20.18.0\node_modules\npm\node_modules\@npmcli\promise-spawn\lib\index.js:22:22) 15 verbose stack at spawnWithShell (C:\mvn\nvm\v20.18.0\node_modules\npm\node_modules\@npmcli\promise-spawn\lib\index.js:124:10) 15 verbose stack at promiseSpawn (C:\mvn\nvm\v20.18.0\node_modules\npm\node_modules\@npmcli\promise-spawn\lib\index.js:12:12) 15 verbose stack at runScriptPkg (C:\mvn\nvm\v20.18.0\node_modules\npm\node_modules\@npmcli\run-script\lib\run-script-pkg.js:77:13) 15 verbose stack at runScript (C:\mvn\nvm\v20.18.0\node_modules\npm\node_modules\@npmcli\run-script\lib\run-script.js:9:12) 15 verbose stack at run (C:\mvn\nvm\v20.18.0\node_modules\npm\node_modules\libnpmexec\lib\run-script.js:48:10) 15 verbose stack at async exec (C:\mvn\nvm\v20.18.0\node_modules\npm\node_modules\libnpmexec\lib\index.js:293:10) 15 verbose stack at async Init.execCreate (C:\mvn\nvm\v20.18.0\node_modules\npm\lib\commands\init.js:136:5) 15 verbose stack at async Init.exec (C:\mvn\nvm\v20.18.0\node_modules\npm\lib\commands\init.js:44:14) 15 verbose stack at async Npm.exec (C:\mvn\nvm\v20.18.0\node_modules\npm\lib\npm.js:207:9) 16 error code 1 17 error path C:\Users\zzz\Desktop\qwe 18 error command failed 19 error command C:\Windows\system32\cmd.exe /d /s /c create-vue 20 verbose cwd C:\Users\zzz\Desktop\qwe 21 verbose os Windows_NT 10.0.19045 22 verbose node v20.18.0 23 verbose npm v10.8.2 24 verbose exit 1 25 verbose code 1 26 error A complete log of this run can be found in: C:\Users\zzz\AppData\Local\npm-cache\_logs\2025-07-31T05_52_52_591Z-debug-0.log 这份npm的打印日志有什么问题.怎么解决
最新发布
08-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值