1 理论部分
1.1 Node.js简介
– Node.js是运行在服务端的JavaScript
– Node.js是基于Chrome JavaScript运行时建立的一个平台
– Node.js是事件驱动I/O服务端JavaScript环境,基于Google的V8引擎
注:V8引擎执行Javascript的速度非常快,性能非常好
1.2 npm的概念
NPM是JavaScript开发人员可以轻松共享和重用代码,并且可以更轻松更新你所共享的代码。
1.3 npm包的分类
1.3.1 全局安装与全局npm包
– 通过“npm install -g ”命令生成
– 在任一目录下通过require函数传递npm包的绝对路径引用
– 无法通过npm包名称直接引用
1.3.2 本地安装与本地npm包
– 项目文件夹内通过“npm install ”命令生成
– 项目文件夹内可直接通过require函数传递本地npm包名称引用
– 本地安装的项目文件夹支持自定义(如,/var/www/project1)
2 最佳实践
2.1 准备工作
2.1.1 安装辅助工具
yum install -y git
2.1.2 配置yum源
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
2.2 配置软件包
2.2.1 部署软件包
yum install -y nodejs
2.2.2 验证安装
node -v
可见如下显示,
v8.16.0
配置完成后,我们建议你使用如下命令测试npm,
npm version
可见如下显示,
{ npm: '6.4.1', ares: '1.10.1-DEV', cldr: '32.0', http_parser: '2.8.0', icu: '60.1', modules: '57', napi: '4', nghttp2: '1.33.0', node: '8.16.0', openssl: '1.0.2r', tz: '2017c', unicode: '10.0', uv: '1.23.2', v8: '6.2.414.77', zlib: '1.2.11' }
配置完成后,我们建议你使用如下命令测试npx,
npx -v
可见如下显示,
6.4.1
2.2.3 增加运行用户
groupadd -g 548 nodejs useradd -u 548 -g 548 -d /var/lib/nodejs/ nodejs
配置完成后,我们建议你使用如下命令测试node、npm和npx,
su - nodejs node -v npm version npx -v
2.2.4 测试sudo权限
sudo -iu nodejs node -v sudo -iu nodejs npm version sudo -iu nodejs npx -v
使用参数“i”是为避免程序以nodejs普通用户身份扫描root的家目录而报以下错误,
Error: EACCES: permission denied, scandir '/root' (node:34196) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'get' of undefined at errorHandler (/usr/lib/node_modules/npm/lib/utils/error-handler.js:205:18) at /usr/lib/node_modules/npm/bin/npm-cli.js:78:20 at cb (/usr/lib/node_modules/npm/lib/npm.js:228:22) at /usr/lib/node_modules/npm/lib/npm.js:266:24 at /usr/lib/node_modules/npm/lib/config/core.js:83:7 at Array.forEach () at /usr/lib/node_modules/npm/lib/config/core.js:82:13 at f (/usr/lib/node_modules/npm/node_modules/once/once.js:25:25) at /usr/lib/node_modules/npm/lib/config/core.js:112:20 at (node:34196) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:34196) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. TypeError: Cannot read property 'loaded' of undefined at process. (/usr/lib/node_modules/npm/lib/utils/error-handler.js:40:18) at emitOne (events.js:116:13) at process.emit (events.js:211:7) /usr/lib/node_modules/npm/lib/utils/error-handler.js:205 if (npm.config.get('json')) { ^ TypeError: Cannot read property 'get' of undefined at process.errorHandler (/usr/lib/node_modules/npm/lib/utils/error-handler.js:205:18) at emitOne (events.js:116:13) at process.emit (events.js:211:7) at process._fatalException (bootstrap_node.js:391:26)
2.2.5 设置全局目录
su - nodejs npm config get prefix
命令行显示当前全局目录的默认路径,
/usr
使用如下命令修改全局目录的默认路径,
su - nodejs mkdir ~/.npm-global npm config set prefix '~/.npm-global'
使用如下命令验证全局目录的路径是否被修改,
su - nodejs npm config get prefix
命令显示如下,
/var/lib/nodejs/.npm-global
2.2.6 设置全局目录的环境变量
su - nodejs cd ~ vim .bash_profile
加入如下行,
# Nodejs_Global export NODEJS_GLOBAL_HOME=/var/lib/nodejs/.npm-global export PATH=${NODEJS_GLOBAL_HOME}/bin:$PATH
保存并退出后,执行以下命令导入环境变量,
source .bash_profile
2.2.7 设置国内的源
su - nodejs npm config get metrics-registry
命令行显示当前源服务器地址,
https://registry.npmjs.org/
使用如下命令修改源服务器地址,
su - nodejs npm config set metrics-registry 'http://registry.npm.taobao.org'
安全连接请使用“https://registry.npm.taobao.org”,修改完毕后,使用如下命令确认配置,
su - nodejs npm config get metrics-registry
命令显示如下,
http://registry.npm.taobao.org
2.3 常用的操作参考
2.3 常用的操作参考
如果你不熟悉常用的操作,请参阅如下链接,
https://www.cmdschool.org/archives/570
参阅文档
===========
https://yarnpkg.com/lang/en/docs/install/#centos-stable
没有评论