• [Node.js] 带你了解Node.js包管理工具:包与NPM
    >摘要:包与NPM Node组织了自身的核心模块,也使得第三方文件模块可以有序的编写和使用。本文分享自华为云社区[《NodeJs深入浅出之旅:包与NPM》](https://bbs.huaweicloud.com/blogs/307034?utm_source=zhihu&utm_medium=bbs-ex&utm_campaign=other&utm_content=content),作者:空城机。 # 包与NPM Node组织了自身的核心模块,也使得第三方文件模块可以有序的编写和使用。 但是在第三方模块中,模块与模块之间仍然是散列在各地的,**相互之间不能直接引用** 所以在模块外,包和NPM是将模块联系起来的机制。 - 包组织模块示意图 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202111/27/141323rxr3v28syu8prqok.png) CommonJS 的包规范定义其实也很简单,由包结构和包描述文件两部分组成。 # 包结构 用于组织包中的各种文件,是一个存档文件,即一个目录直接打包为.zip或tar.gz格式的文件。 符合规范的包目录: - package.json: 包描述文件 - bin: 用于存放可执行二进制文件的目录 - lib: 用于存放JavaScript代码的目录 - doc: 用于存放文档的目录 - test: 用于存放单元测试用例的代码 # package.json包描述文件 NPM所有行为都与包描述文件的字段息息相关 一些字段: - name: 包名。 规范定义需要用小写的字母和数字组成,不允许出现空格。 包名必须是唯一的,以免对外公布时产生重名冲突 - description: 包简介 - version: 版本号,关于其介绍在《Node.js学习(一)——简介》也有提及 - keywords: 关键字数组, NPM中主要用来作分类搜索。 - maintainers: 包维护者列表。 每个维护者由name、email和web这3个属性组成。 NPM通过这个属性进行权限认证。 格式: ```"maintainers":[{ "name":"kongchengji", "email":"111@.com", "web":"[http:](https://blog.csdn.net/qq_36171287)" }]``` - contributors: 贡献者列表,格式与维护者列表相同 - bugs: 一个可以反馈bug的网页地址或邮件地址 - licenses: 当前包所使用的许可证列表,表示包在哪些许可证下使用 格式: "licenses":[{ "type": "GPLv2", "url":"" }] // 或者 "license": "ISC" - repositories: 托管源代码的位置列表,表明可以通过哪些方式和地址访问包源代码。 - 格式: - "repository": { - "type": "git", - "url": "git+https://github.com/kongchengji/UiSelfMade.git" - }, - dependencies: 使用当前包所需要依赖的包列表。 这个属性非常重要 - homepage: 当前包的网站地址 - os: 操作系统支持列表, 如果列表为空,则不对操作系统做任何假设 - cpi: CPU架构支持列表 - engine:支持的JavaScript引擎列表 - directories:包目录说明 - implements: 实施规范的列表。 标志当前包实现了CommonJS哪些规范 - scripts: 脚本说明对象。 主要用于被包管理器用来安装、编译、测试和卸载包 "scripts": { "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "start": "npm run dev", "lint": "eslint --ext .js,.vue src", "build": "node build/build.js" }, NPM与包规范区别在于多了四个字段: - author: 包作者 :ok_man: - bin: 一些包作者希望包可以作为命令行工具使用。 - main: 模块引入包时,会有限检查这个字段,并将其作为包中其余模块的入口模块。 如果不存在,require会查找包目录下的index.js、index.node、index.json作为默认入口 - devDependencies: 一些模块只在开发时需要依赖。 devDependencies:开发环境使用 dependencies:生产环境使用 # 前后端共用模块 JavaScript在Node出现后,有一项优势 --> 一些模块可以在前后端实现共用。 但是前后端上始终还是有一些差别的 :sweat_drops: # 前后端模块侧重点 前后端JavaScript分别搁置在HTPP的两端,扮演的角色并不同。 浏览器端的JavaScript需要经历从同一个服务器端分发到多个客户端执行,瓶颈是带宽,从网络加载代码 服务器端的JavaScript是相同代码需要多次执行,瓶颈是CPU和内存等资源,从磁盘中加载 在前端JavaScript中,主要还是应用**AMD规范**。 CommonJS并不完全适用于前端JavaScript,比如Node的模块引入基本是同步的,但是前端引入如果使用同步引入,UI在初始化过程中需要花费很多时间等待脚本加载完成。 # AMD规范 AMD规范 是CommonJS规范的一个延伸,全称:Asynchronous Module Definition。 是异步模块定义 模块定义:define(id?, dependencies?, factory); id 是模块的名字,它是可选的参数。 dependencies 指定了所要依赖的模块列表,它是一个数组,也是可选的参数 AMD需要在声明模块时指定所有的依赖,通过形参传递依赖到模块内容中: define(['./a', './b'], function (dep1, dep2) { a.doSomethimg() b.doSomething() }); # CMD规范 与AMD规范相对的还有CMD规范,全称:Common Module Definition。 是公共模块定义 这是由国内的玉伯(也是一位大佬)提出的 模块定义:define(factory) CMD支持动态引入: define(function(require, exports, module) { var a=require('./a') a.doSomethimg() var b=require('./b') b.doSomething() }) 在需要依赖模块时, 随时调用require()引入即可 CMD 推崇依赖就近; AMD 推崇依赖前置 CMD 是延迟执行; AMD 是提前执行 CMD性能好,因为只有用户需要的时候才执行; AMD用户体验好,因为没有延迟,依赖模块提前执行了 AMD和CMD最大的区别是对依赖模块的执行时机处理不同 # 兼容多种模块规范 创建一个hello方法,让hello方法能在不同运行环境中运行,兼容Node、AMD、CMD和常见浏览器 匿名函数前加一个;是个好习惯 name是方法名,definition是方法体 通过typeof检测环境是否为AMD或CMD还是Node环境 可以将模块执行结果挂载在window变量中,这样可以直接调用 // 匿名函数前加一个;是个好习惯 name是方法名,definition是方法体 ;(function (name, definition) { //检查环境是否是AMD或CMD var hasDefine = typeof define === 'function', // 检查环境是否为Node hasExports = typeof module !== 'undefined' && mudule.exports; if(hasDefine) { define(definition); } else if (hasExports) { module.exports = definition(); } else { // 将模块的执行结果挂在window变量中,在浏览器中this指向window对象 this[name] = definition(); } })('hello', function () { var hello = function () { console.log('hello'); } return hello; });
  • [问题求助] arm64架构的麒麟系统,无法安装node-ffi模块
    【功能模块】在这个arm64架构的麒麟服务器上面,创建了一个nodejs项目,这个项目会依赖ffi模块,但是安装ffi依赖模块的时候报错,安装失败。【操作步骤&问题现象】执行命令:sudo npm install ffi【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • Cloud9 ide 云开发环境介绍
    Cloud9 IDE是一个基于Node.JS构建的JavaScript程序开发Web IDE。它拥有一个非常快的文本编辑器支持为JS, HTML, CSS和这几种的混合代码进行着色显示。Cloud9 IDE还为node.js和Google Chrome集成调试器可以在IDE中启动、暂停和停止。能够在云计算环境中测试和部署你的代码。使用WebDAV,它还可以连到远程工作台。Cloud9 IDE拥有一个插件系统用来扩展现有功能,当前该IDE已经捆绑好几个插件。Node.js介绍Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始。比较独特的是,Node.js会假设你是在POSIX环境下运行它Linux 或 Mac OS X。如果你是在Windows下,那就需要安装MinGW以获得一个仿POSIX的环境。在Node中,Http是首要的。Node为创建http服务器作了优化,所以你在网上看到的大部分示例和库都是集中在web上(http框架、模板库等)。这个软件被一个网站评为2011最佳开源软件之一。可见其中的分量,据说具有极高的并发量。当然也要看应用了。Cloud9 ide项目最初的时候,Cloud9仅仅是重新组织了一下Eclipse的视觉元素,而且它也同样使用了Eclipse的插件思想。所有的功能都是由插件来完成 的,包括编辑器,视图,行为等。JavaScript插件的一个好处是可以轻松处理JSON格式的元数据描述字符,让插件开发者省心不少。从功能上来说,至少和成熟的IDE相比功能还是不够的。不过现在它已经有很多很方便的功能了。JavaScript Debugging已经支持GUI、Node.js脚本调试的连接器以及Chrome runtimes,并且在GUI中能够挂起,恢复和设置断点。这个特性的关键在于使用了JavaScript VM的内建调试器。    Cloud9使用ACE作为编辑器组件。编辑器的窗格是DIV元素;ACE能够决定在编辑器中哪些能够显示,把这些内容作为DIV元素渲染 然后加入到编辑器的DIV中。ACE使用多层DIV来渲染编辑器中不同的元素,尤其是光标和选择高亮的实现。看起来现在的HTML渲染器和DOM已经足够强大,能够让ACE高速运行,给用户感觉是像一个原生的编辑器组件。对编辑器组件大有裨益的一个HTML5 API是Web Worker API,这个组件允许JavaScript代码能够新建JavaScript进程,而不是所谓的无共享的进程,它们之间的通信是使用JSON格式的数据。 在程序员的编辑器中,在后台运行任务是非常重要的;每次敲击键盘或者操作都会产生大量的工作。使用正则表达式的语法高亮就是其中之一,但是,现代编辑器需 要解析源代码来做语义高亮,例如,用不同颜色表示局部变量和全局变量,静态方法和虚拟方法等。其他的特性还包括代码折叠支持等。可以聪明地通过使用 setTimeout来在前台线程中运行这些任务。Web工程师从而不需要破解内部结构,而能够直接在后台运行额外的任务,充分利用多核结构。虽然名字中带有云的概念,但是Cloud9还可以默认在本地安装和运行,并且可以访问本地文件系统。它在后端使用JavaScript编写的Node.js文件来通过socket进行通信。Node.js将文件内容封装成jsdav库所支持的WebDAV格式。
  • [赋能学习] FusionInsight Kafka节点退服后未完全同步分区迁移方案
    一、          收集Kafka实例和分区信息1.       执行kafka-broker-info.sh --zookeeper zk业务IP:24002/kafka 命令获取Kafka实例信息2.       执行kafka-topics.sh --describe --zookeeper zk业务IP:24002/kafka --unavailable-partitions 命令获取Kafka未同步分区3.       对比Replicas和ISR列表中的信息,确定哪些节点的分区未同步,确定未同步的节点正常与否。例如,如下案例中,对比Replicas和ISR列表中的信息发现3节点没有同步,而正常的kafka实例中没有3。                      二、          准备迁移方案根据步骤一中的未完全同步的分区即需要迁移的分区,把需要迁移的所有分区写入一个新的json文件,文件中replicas中的信息需要根据步骤一中第2步查询结果中的Replicas把退服节点的brokerid改为正常节点的brokerid(即步骤一中第1步查询到的brokerid),其他不变,格式如下所示:{"version":1,"partitions":[{"topic":"test1","partition":0"replicas":[1,2]},{"topic":"test1","partition":1"replicas":[1,2]},{"topic":"test1","partition":5,"replicas":[2,1]},{"topic":"test1","partition":3,"replicas":[2,1]}]}如果涉及的分区比较多,也可按如下方式生成迁移的json文件。1.       根据步骤一中未完全同步的分区中的topic信息编写迁移topic的json文件,例如json文件名为generate.json,格式如下:{"topics":[{"topic": "test1"},{"topic": "test2"}], "version":1}2.       执行命令kafka-reassign-partitions.sh --zookeeper zk业务IP:24002/kafka --topics-to-move-json-file generate.json文件路径  --broker-list 1,2 --generate 生成迁移方案,其中,broker-list中对应参数是所有正常的broker实例的id,即步骤一中1获取的所有brokerid,不同brokerid间用逗号隔开。3.       把上一步得到的“Proposed partition reassignment configuration”的json文件写入迁移的json文件中,例如move.json,此json文件中只保留需要迁移的topic和partition的信息。如下图所示,红色方框内即迁移的json文件信息。三、          执行迁移执行kafka-reassign-partitions.sh --zookeeper zk业务IP:24002/kafka  --reassignment-json-file move.json文件路径 --execute 执行迁移四、          查看迁移进度执行kafka-reassign-partitions.sh --zookeeper zk业务IP:24002/kafka  --reassignment-json-file move.json文件路径 --verify 查看迁移进度,当所有partition都提示completed successfully时说明迁移完成。五、          查看是否所有分区都同步执行kafka-topics.sh --describe --zookeeper zk业务IP:24002/kafka --unavailable-partitions 命令获取Kafka未同步分区,如果结果为空,说明所有分区都同步,操作完成;如果有leader为-1,按步骤六执行。六、          Leader为-1的解决办法1.      Kafka配置中查看unclean.leader.election.enable配置,如果配置为true,只执行下面步骤2即可;如果配置为false,执行下面步骤3、4、5。2.      切controller:进zookeeper客户端,执行 zkCli.sh -server zk业务IP:24002/kafka进入zk,执行deleteall /controller 切controller。3.      Kafka客户端修改参数配置:kafka-topics.sh --alter --topic topicName --zookeeper zk业务IP:24002/kafka --config unclean.leader.election.enable=true,其中,topicName是leader为-1的topic。4.      按步骤2切controller。5.      查看leader为-1的分区leader是否正常,正常后在kafka客户端执行kafka-topics.sh --alter --topic topicName --zookeeper 100.112.22.233:24002/kafka --delete-config unclean.leader.election.enable。
  • 鸿蒙DevEco Studio内的js太难下载了
    鸿蒙DevEco Studio内的js太难下载了我手动下载node.js后又没有可以配置的地方,然后就一直卡在无法编译的地方,导致js的项目无法运行,这个怎么说呢,严重影响体验,无非就是一个js的运行环境,搞的这么复杂
  • 【圈粉贴】Node.js是新手坟场?是时候展现真正的力量了!
    “Node 开发者容易面临的前三大困惑分别是异步编程、事件驱动以及 Debug。同时,文档是大家最期待的资源,新人对视频教程和免费在线课程的呼声最高。”这份《2020 年 Node.js 开发者调查报告》给出的信息,也正的疑惑。如何学习和进阶Node.js?如何让自己写的代码顺滑无bug?如何才能找到易用和高可用的平台呢?今天我来提点自己的拙见,看完觉得有用的老铁希望点个关注么么哒。是当下很多开发者心中JavaScript相信大家都不陌生,尤其是对于前端工程师而言,更是必备技能。传统意义上的 JavaScript 是运行在浏览器上的脚本语言。而Node.js 是一个运行在服务端的框架,它的底层使用了 V8 引擎。我们知道 Apache + PHP 以及 Java 的 Servlet 都可以用来开发**页,Node.js 的作用与他们类似,只不过是使用 JavaScript 来开发。他提供了底层服务器功能环境,包括二进制数据操作、文件系统 I/O、数据库访问、网络访问等。它独一无二的特性使其在现存的多种成熟服务器语言中脱颖而出。 同样声名鹊起的还有华为云。近年来,华为云已经成为市场上的一股不容小觑的力量。尤其是前段时间,华为云鲲鹏生态裹挟着铺天盖地的宣传横空出现,对其的评论的风向也是花样繁多,那么华为云鲲鹏弹性云服务器的表现究竟如何呢?本文将会带大家亲自感受一下在华为云鲲鹏弹性云服务器的 CentOS 系统上安装、部署、测试 Node.js 项目,以及其高可用性的探索。话不多说,我们走起。Node.js部署环境配置全流程首先,输入以下命令”LANG=en_us.UTF-8 ssh root@EIP“登陆华为云,需要使用华为云服务器 ECS 的公网 IP 替换命令中的 EIP一般本地服务器时可以直接获取公网IP,那么在华为云鲲鹏弹性云服务器,如何获取公网 IP 呢?而在云服务器中,弹性公网 IP 地址则可以通过点击“控制台”->“服务列表”->“计算”->“弹性云服务器 ECS”进入服务器列表,进行查看并复制。  在登陆时需要注意的是,输入密码的时候终端是不会有展示的,所以一定要确保密码是正确的。登陆成功后显示的界面如下。 然后就可以下载 node.js 安装包了,执行下载命令 解压文件 为 node 和 npm 建立软连接,建立完软连接后可以直接查看 node 和 npm 的版本,出现下图即表示安装成功。使用代码如下:ln -s /root/node-v10.16.0-linux-arm64/bin/node /usr/local/bin/nodeln -s /root/node-v10.16.0-linux-arm64/bin/npm /usr/local/bin/npm 其实到这里Node.js服务器环境就已经部署完毕了,可以直接运行项目代码 。但如果服务器上运行多个项目时,如果只安装一个全局的node.js版本,则在升级时可能会遇到很多问题。所以我们需要使用 nvm 版本管理器安装 node.js 多版本,这并不是一个必须的步骤,但是依然值得尝试。首先,下载 NVM 版本管理器,并在终端中输入以下命令git clone https://codehub.devcloud.cn-north-4.huaweicloud.com/Demo01087/nvm.git ~/.nvm && cd ~/.nvm 然后激活 NVM 版本管理器,并将其追加到 profile 文件下echo ". ~/.nvm/nvm.sh" >> /etc/profile NVM修改完毕后,就可以安装不同版本的node了,例如下图安装12.3.0的node包 node安装完毕后,就可以在服务器上运行脚本了。为了简化流程,我选择运行一个简单的脚本,利用node起一个服务器,部署在3000端口上。 服务器启动后,要想外网能够访问还需要再控制台配置下安全组规则。到这里node.js的部署环境配置实测就已经结束了。来展示一下我的成品。 这次比较不按套路出牌,没有“hello world”从前端语言到运维实践在此次实践中,我们可以简单点评一下大鲲鹏带给我的直观的感知。首先,它对于新用户的友好度是很高的,以Node.js的部署环境配置来看,云端实验室中的鲲鹏实验中配置了相关的实验和ABC级别的指导教程,用户可以根据指导一步步实现环境配置,即便是小白程序员也能轻松上手;代码一键复制的功能对于并不熟悉linux命令的开发者而言也算是细致入微了。随着竞争的加速,对于前后端的程序员都需要了解一些运维部署的知识,鲲鹏学院则提供了这样一个方便大家学习的平台。在这上面你能方便的获得小白开发者、鲲鹏开发者的相关课程,并且在完成了各类课程的学习之后,可以通过各类微认证和职业认证,来检验自身的学习成果,并且还能通过官方认证还能获取就业优先推荐机会,实用性这里必须加粗标红。对于企业来说,把网站部署在云端能够减少大量的运维负担,充分利用华为云的基础生态和平台能力,可以减少建站部署的复杂程度,解放程序员双手,让大家不用秃头改代码收获幸福人生;降低程序员和产品经理的掐架频率。随着网站用户访问量增大,系统服务很容易挂掉。例如微博突发热搜,淘宝的双十一等关键节点正是考验我们服务器能力的时候。很多大公司都会自研弹性负载均衡系统,但是管理两台机器的复杂程度不是管理一台机器的两倍,甚至是8倍、10倍。这其中需要考虑防火墙、抗DDoS攻击、监控报警、日志打点、数据同步等一系列问题,其实是一个很复杂的事情。因此,对于更多的企业站点使用云服务厂商提供的弹性负载均衡系统会更加的简单便捷,节省成本。基于ELB和AS服务的高可用性解析随着网站用户访问量增大,系统服务很容易挂掉。例如微博热门事件,淘宝的双十一等关键节点正是考验我们服务器能力的时候。很多大公司都会自研弹性负载均衡系统,但是管理两台机器的复杂程度不是管理一台机器的两倍,甚至是8倍、10倍。这其中需要考虑防火墙、抗DDoS攻击、监控报警、日志打点、数据同步等一系列问题,其实是一个很复杂的事情。所以,对于更多的企业站点使用云服务厂商提供的弹性负载均衡系统会更加的简单便捷,节省成本。 首先了解什么是高可用性,高可用性是系统一种特征或者指标,通常是指提供一定性能上的服务运行时间,高于平均正常时间段。反之,则消除系统服务不可用的时间。衡量系统是否满足高可用,就是当一台或者多台服务器宕机的时候,系统整体和服务依然正常可用。 举个例子,一些知名的网站保证 4 个 9 以上的可用性,也就是可用性超过 99.99%。那 0.01% 就是所谓故障时间的百分比。比如一些金融和电商网站都会对这些指标有严格的要求。 弹性伸缩服务能够在秒杀、抢购等流量激增的情况下能够确保服务器能够动态扩容,满足客户的良好体验。比如下单服务,当流量如潮水般涌过来的时候,ELB会根据算法动态的分配服务器资源,同时结合AS服务动态扩容服务器资源。 负载均衡是分布式系统架构设计中必须考虑的因素之一。一般通过负载均衡,解决分布式系统的大流量、高并发和高可用的问题。 那么在华为云鲲鹏弹性云服务器中,是如何保持高可用性的呢?其大体流程如下图所示:1.      流量调度。ELB通过监听器检查连接请求,跟进调度算法定义的转发策略将请求流量分发至后端服务器,起到了交通指挥官的作用,但是他更加的智能。2.      健康检查。判断后端服务器的业务可用性,确保将请求发送到健康的的ECS上。如果发现服务有问题也会进行及时摘除。3.      会话保持。将一段时间内来自同一用户的请求转发到相同的后端服务器,保障用户访问的连续性。4.      弹性伸缩。可以根据访问量自动扩展,保障业务灵活可用。例如上图中提到的利用定时/周期策略触发伸缩,当cpu/内存/入网流量等监控指标达到警告阀门也会触发伸缩。 搭产业顺风车,走开发快速道开发产业的一个典型特征就是活到老、学到老,五年前的JavaScript和现在相比堪称天壤之别。研读Node.js 使用报告,发现 Node.js 的使用有许多的成长,而且,五年前的浏览器环境和现在的Node环境全然不同。在云时代,越来越多的语言创造了更多可能,也让开发变得更加便捷。就像此次测试中,基于JavaScript、Python、Java等解释型语言开发的应用程序,其与CPU架构并无相关,因此将这类应用程序移植到华为云鲲鹏弹性云服务器上之后,无需修改和重新编译,都可以按照与x86一致的方式部署和运行应用程序即可,对开发者的帮助是显而易见的。 语言的升级带来了便捷,也带来了一些新的趋势,越来越多企业将主体业务放到云端,越来越多的前端工程师关心并参与到后端和全栈的工作中去。开发需求升级,各类开发者社区也便跟着升级,而华为云鲲鹏社区便是一个这样的平台,其能够提供的技术能力不仅能够解决企业业务需求,还能快速赋能开发者,实现快速成长。开发者能方便的找到适合自己能力的相关开发课程来进行学习,学会使用这些更加高效的产品,让自己的价值不断上升,避免出现网传“35岁被扼颈”的窘迫局面。更为可观的是,前端工程师远非云计算浪潮中最大的受益者。合理使用云服务器带来的ELB、AS等能力,能够让运维工程师从繁杂的工作中解脱出来,专注于系统的优化。目前,包括华为云在内的很多云服务能够提供大量的基础功能和运维工具,这些能力能够让自己脱离机械式编程工作,而是在不断的探索中发现更多高效、实用的工具,基于新的技术环境上实现适配性升级,避免频繁的重复造轮子,而是搭乘软件行业的顺风车,走上真正的开发快速道。(图片来源网络,侵删)
  • [Node.js] 镜像过旧
    截止 2019-02-13,Node.js 官方发布的最新版本如下:Current: 11.9.0LTS: 10.15.1华为 Node.js 镜像最新版本如下 (主页显示最后更新于 2018-05-02 01:35:01):Current: 10.9.0LTS: 8.11.4可能的解决方案:订阅下列 URL 之一,每隔一段时间拉取内容,发现更新时,触发同步。https://nodejs.org/en/feed/releases.xmlhttps://github.com/nodejs/node/releases.atomhttps://nodejs.org/dist/index.json https://nodejs.org/dist/index.tab参考资料:Notification of new releaseshttps://github.com/nodejs/help/issues/86Release Feedhttps://github.com/nodejs/build/issues/608
  • [技术干货] node.js调试北向接口【转】
    (转自https://developer.huawei.com/ict/forum/thread-26457.html  感谢@andy2017的分享)通过Node.js的request模块来调用北向接口。request的详细介绍可以参见:https://www.npmjs.com/package/request下面为调用鉴权接口的代码:var fs = require('fs')   , path = require('path')   , certFile = path.resolve(__dirname, 'ssl/client.crt')   , keyFile = path.resolve(__dirname, 'ssl/client.key')   , request = require('request');var options = {   url: 'https://XXX.XXX.XXX.XXX:8743/iocm/app/sec/v1.1.0/login',   method: 'POST',   agentOptions: {       cert: fs.readFileSync(certFile),       key: fs.readFileSync(keyFile)   },   headers: [       {         name: 'content-type',         value: 'application/x-www-form-urlencoded'       }   ],   form :   {    'appId':'XXXX',    'secret': 'XXXX'   },   strictSSL: false};request(options,function(error,response,body){if (!error && response.statusCode == 200) {console.log(body);   }});其中使用的证书及公钥可以参加这篇帖子的附件获取。https://bbs.huaweicloud.com/forum/thread-13234-1-1.html 
  • npm工具安装配置教程
    本帖最后由 华为开源镜像站 于 2018-1-25 17:30 编辑一、什么是npm?npm的全称是node package manager,是随同Node.js一起安装的包管理工具。npm是世界上最大的软件依赖包库,每星期大约有30亿的下载次数,包含超过600,000个包(代码的构建块)。来自全世界的开源开发者通过npm共享这些依赖包,它们遵循特定的结构,使你能够跟踪、管理版本和多个依赖项。 二、常见的使用场景有哪些?1.允许用户从npm服务器下载其他开发者编写的第三方包2.允许用户从npm服务器下载并安装其他开发者编写的命令行程序3.允许用户将自己编写的包或命令行程序上传到npm服务器 三、如何查找包?https://www.npmjs.com/ 搜索框中查找,你可以找到1.用于服务器端的Node模块2.用于命令行中添加命令的依赖包3.用于网站前端的依赖包 四、如何安装npm?npm由Node.js编写,所以为了使用npm需要先安装Node.js。安装文件下载地址:https://nodejs.org/en/download/建议下载标记LTS的版本,其他版本可能没有经过测试验证。安装后运行node -v查看Node.js版本。npm会随Node.js自动安装。npm更新的频率比Node.js更频繁,确保你安装的是最新版本。运行 npm -v 查看npm版本。运行 npm install npm@latest -g 下载最新官网测试过的版本。 五、registry配置设置地址为华为开发云npm镜像npm config set registry https://mirrors.huaweicloud.com/repository/npm/
总条数:37 到第
上滑加载中