Nodejs v env 文件、导入模块和权限模型

nodejs v env 文件、导入模块和权限模型

node.js v20.6 已发布,其中包含令人惊叹的新功能,这些新功能是 2023 年 10 月 24 日起 lts 版本的一部分。让我们拭目以待!

ini 配置文件

告别 dotenv 包,现在 node.js 可以从 .env 文件加载环境变量。

node --env-file path/to/.env index.js

? ini 文件的路径是必需的,因为 node.js 没有为 ini 文件选择默认名称。

? 如果 ini 文件不存在,则节点进程没有失败,只需在没有环境变量的情况下开始运行即可。

正在加载node_options

您可以使用 ini 配置文件加载 node.js 的特定环境变量(如 node_options),如下例所示:

node_no_warnings=1node_options="--experimental-permission --allow-fs-read=*"tz=pacific/honoluluuv_threadpool_size=5

可以用同样的方法使用:

node --env-file .env index.js

预加载 es 模块

使用 –import 标志在启动时预加载 es 模块,该模块将在任何应用程序代码运行之前加载,甚至是入口点。

node --import path/to/file.js index.js

此标志类似于众所周知的用于加载 commonjs 模块的 –require 标志。

? 使用 –require 预加载的模块将在使用 –import 预加载的模块之前运行。

权限模型

我们有一个新的机制来限制在执行 node.js 进程期间对特定资源的访问,称为权限模型。该 api 存在于标志 –experimental-permission 后面,启用该标志后,将限制对所有未明确允许的资源的访问。

文件系统权限

–allow-fs-read 标志允许使用 * 的所有 filesystemread 操作,或使用绝对路由到特定路径。

node --experimental-permission --allow-fs-read=* index.js

要仅允许访问特定路径,您应该使用绝对路径

node --experimental-permission --allow-fs-read=/path/to/index.js --allow-fs-read=/path/to/directory index.js

? 初始化模块也需要被允许。否则 node.js 进程本身无法加载 index.js 文件。

? 你可以使用 .允许访问工作目录,但不能使用它来指定文件的路径(例如 ./index.js)。

node --experimental-permission --allow-fs-read=. index.js

–allow-fs-write 标志允许使用 *.
访问特定路径或整个文件系统

node --experimental-permission --allow-fs-read=. --allow-fs-write=/tmp/ index.js

子进程

启用权限模型后,默认情况下进程将无法生成任何子进程,您应该使用 –allow-child-process 来允许此操作。让我们对index.js 使用以下代码。

const childprocess = require('node:child_process');childprocess.spawn('node', ['-e', 'require("fs").writefilesync("./new-file.txt", "hello, world!")']);

要在启用权限模型的情况下运行此代码片段,您应该使用以下命令执行index.js:

node --experimental-permission --allow-fs-read . --allow-child-process index.js

? 子进程默认不会继承权限模型,所以new-file.txt创建成功。

更多选择

如果你想在此权限模型下创建工作线程,可以勾选 –allow-worker 标志,并勾选 –allow-wasi 以允许创建 wasi 实例

结论

我们有很多新工具来为我们的应用程序加载环境变量,一种导入代码中所需的预加载 es 模块的方法,以及一个新的权限模型来提高我们系统的安全性。

请继续关注 node.js 的博客,这个团队正在每个版本中添加很棒的功能!我们在 v22.6.0 中提供了初始 typescript 支持和使用 devtools 的网络检查。

以上就是Nodejs v env 文件、导入模块和权限模型的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1490192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 13:00:32
下一篇 2025年12月19日 13:00:44

相关推荐

  • 使用 NodeJS 处理小数点后带零的浮点数

    在 NodeJS 开发中,尤其是在处理 API 请求时,我们经常会遇到需要精确处理浮点数的情况。一个常见的困扰是,当接收到的浮点数小数点后为零时,NodeJS 会将其自动转换为整数。例如,5.0 会被解析为 5。这在某些场景下可能会导致问题,尤其是在需要保持数据类型一致性的 API 开发中。 问题分…

    2025年12月20日
    000
  • Node.js Winston日志:固定文件名与文件大小限制下的日志覆盖策略

    本文探讨了在Node.js应用中,如何利用Winston日志库实现固定文件名日志文件的循环覆盖,特别是在文件大小达到上限时无需服务重启即可覆盖。核心解决方案在于Winston的File传输器配置中,通过设置rotationFormat: () => ”并结合maxsize和maxF…

    2025年12月20日
    000
  • NodeJS Streams:在 Pipeline 中优雅地提前结束读取流

    本文探讨了在使用 NodeJS Streams 的 pipeline 处理大型文件时,如何在满足特定条件后提前结束读取流,同时确保已读取的数据块能够完成处理。文章提供了两种解决方案:一种是在转换流中“吞噬”后续数据,另一种是利用 AbortController 中止 pipeline,并详细讲解了实…

    2025年12月20日
    000
  • 纯JavaScript实现IPFS文件上传与固定:策略、服务与实践

    IPFS并非传统意义上的存储提供商,而是去中心化文件系统协议。要将文件(特别是NFT图像)高效且持久地添加到IPFS网络,推荐使用专业的IPFS固定服务,如Pinata或nft.storage。这些服务通常提供API接口,允许开发者通过纯JavaScript进行文件上传与固定操作,且多数提供免费层级…

    2025年12月20日
    000
  • VS Code终端NPM命令不识别问题的解决方案

    在VS Code集成终端中执行NPM命令时,开发者有时会遇到“命令未识别”的错误提示,这通常会导致项目初始化或依赖安装中断。本文将深入探讨这一常见问题,并提供详细的步骤和最佳实践,帮助您在VS Code中顺畅地运行NPM命令,确保开发流程的连贯性。 1. 理解问题根源 当您在VS Code终端中输入…

    2025年12月20日
    000
  • 运行从GitHub下载的React/Next.js项目:常见问题与解决方案

    本文旨在解决从GitHub下载React/Next.js项目后无法启动的常见问题。核心在于理解Node.js项目依赖管理,特别是node_modules文件夹通常不包含在Git仓库中。教程将详细指导如何通过简单的npm install命令安装所有必要的项目依赖,并最终成功启动应用程序,确保开发者能够…

    2025年12月20日
    100
  • js怎样获取url参数值 js获取url参数的3种高效方法详解

    如何从url中提取参数值?1.使用urlsearchparams是现代推荐方法,适用于大多数浏览器,能轻松解析参数并处理编码;2.正则表达式适用于兼容老浏览器或高性能场景,但需手动解码;3.第三方库如qs适合处理复杂结构,支持嵌套对象和数组,但会增加依赖。例如,urlsearchparams可直接解…

    2025年12月20日 好文分享
    000
  • 怎样用JavaScript使用RaspberryPi?

    在raspberry pi上使用javascript开发需要安装node.js。步骤如下:1. sudo apt-get update 2. sudo apt-get install nodejs npm。安装后,可使用onoff模块控制gpio端口,如点亮led灯。 用JavaScript在Ras…

    2025年12月20日
    000
  • NodeJS版本过高会导致打包错误吗?如何解决?

    Node.js版本与打包错误:排查与解决 开发过程中,本地运行正常的代码在打包时出现错误,是常见问题。本文分析此类问题,并提供解决方案。 问题场景 部分开发者反馈:代码本地运行无误,但打包时报错。各种排错方法无效。 原因分析及解决方法 经排查,问题源于Node.js版本过高,导致打包工具或依赖库兼容…

    2025年12月20日
    000
  • 如何使用JavaScript将录音的Blob流切分成多个5秒的WAV文件并确保其正常播放?

    使用javascript切分录音的blob流并生成5秒的wav文件 在使用react-mic进行录音时,遇到一个需求:需要将录音的blob流切分成多个5秒的wav文件。然而,尝试之后发现只有第一个切分的wav文件能够正常播放,其余文件均提示文件损坏。 在前端实现这个需求时,主要面临两个挑战:一是如何…

    好文分享 2025年12月20日
    000
  • Nodejs中如何正确导入ES6语法npm包?

    node.js导入es6模块的最佳实践 本文介绍如何在Node.js中正确导入使用ES6语法的npm包,并解决可能遇到的问题。 核心问题: Node.js传统上使用require导入CommonJS模块,而ES6模块使用import。直接在Node.js中使用import导入某些npm包时,可能会出…

    2025年12月20日
    000
  • Vue Hook异步数据渲染:如何在Vue Hook中正确处理异步数据并更新视图?

    Vue Hook 异步数据处理与视图更新 本文探讨如何在 Vue Hook 中有效处理异步数据并更新视图。 常见的错误在于直接修改响应式变量的引用,导致视图无法更新。 问题描述: 如何确保在 Vue Hook 中获取的异步数据正确地更新视图? 立即学习“前端免费学习笔记(深入)”; 代码示例及问题分…

    2025年12月20日
    000
  • Vue Hooks中如何正确返回并展示异步获取的数据?

    Vue Hooks中正确处理和展示异步数据的技巧 在Vue中使用Hooks处理异步数据并将其渲染到模板中,需要确保数据响应性的完整性。以下是如何避免常见错误并实现正确数据展示的方法。 问题示例:数据更新不生效 以下代码演示了一个常见问题:使用reactive创建响应式对象,但直接重新赋值导致Vue无…

    2025年12月20日
    000
  • 如何在nodejs中使用sqlite构建矢量数据库

    SQLite凭借其轻量、快速和经过实战检验的特性,广泛应用于各种系统,从大型系统到微型嵌入式设备,甚至网络浏览器和Android手机都依赖于它。 如今,AI技术日新月异,大型语言模型(LLMs)也正朝着小型化、高效化的方向发展。通过量化等技术手段,LLMs 的体积不断缩小,效率不断提升。 当LLMs…

    2025年12月19日
    000
  • 使用Seerbit接受多种货币:开发人员指南

    在全球化市场中,支持多种货币对企业吸引多元化客户至关重要。允许客户使用其偏好货币支付,不仅提升用户体验,还能显著提高交易转化率。 领先的支付网关 Seerbit Seerbit 提供强大的多货币功能,使企业能够流畅地处理来自全球各地的支付。Seerbit 的多货币功能: 支持的货币和地区 Seerb…

    2025年12月19日
    000
  • 您是在犯这些Nodejs安全错误吗?

    介绍 >在2016年,当黑客通过利用私人github存储库中的暴露凭据访问其aws s3服务器时,uber面临严重的安全漏洞。该服务器包含5700万用户和60万驱动程序的敏感数据。违规发生是由于不良的访问控制和凭证管理在其node.js应用程序中。如果像uber这样的技术巨头可能会发生这种情况…

    好文分享 2025年12月19日
    000
  • 在Nodejs的引擎盖下:探索VavaScript引擎

    本文最初发表于我的博客,原文链接如下: 深入V8 JavaScript引擎 V8引擎如何赋予Node.js超高效率?本文将深入探讨V8的内部机制。 rahulvijayvergiya.hashnode.dev V8引擎是JavaScript执行的核心,一个用C++编写的高性能开源JavaScript…

    2025年12月19日
    000
  • 如何使用Express和Nodejs发送电子邮件

    使用自定义模板个性化电子邮件发送 我最近在shiksha团队参与了一个项目,需要使用自定义模板向客户发送个性化电子邮件。本文将分享如何使用不同模板自定义电子邮件发送流程的经验。 创建电子邮件模板 项目中使用Nodemailer发送电子邮件。最初,我直接在sendmail函数中使用简单的HTML和CS…

    2025年12月19日 好文分享
    000
  • nodejs中的类型查看实验性打字稿执行

    关注我的GitHub新项目! 简介 Node.js 23版本引入了一项令人兴奋的实验性功能:直接运行TypeScript文件,无需预编译。此功能简化了开发流程,让开发者像运行JavaScript文件一样轻松运行TypeScript脚本。本文将深入探讨这项实验性功能的工作机制、Node.js 23中的…

    2025年12月19日
    000
  • Devto(编码之旅)的第一篇文章

    我是一位经验丰富的软件工程师,拥有四年以上的专业开发经验。我的职业生涯始于大学期间的PHP项目开发,这为我在一家小型软件公司赢得了实习机会。我毕业于一所公立大学,获得计算机科学学士学位。 疫情期间,我短暂返回家乡,但很快便加入另一家软件公司继续我的实习工作。 我再次投入到PHP开发中,并使用Yii2…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信