配置nodejs项目(linux)

  作为开发多年的前后端不分离的项目。如今前后分离成为了主流,我们也需要跟着时代的技术潮流。所以今天我尝试着搭建nodejs环境,以及遇到的一些问题进行整理。

一、准备

  nodejs地址 http://nodejs.cn/download/

  cnpm 地址 https://www.npmjs.com/package/cnpm

  环境 centos7.x

二、安装配置

  选择阿里云镜像,直接命令行下载

wget https://npm.taobao.org/mirrors/node/v14.16.1/node-v14.16.1-linux-x64.tar.xz 
tar xf
node-v14.16.1-linux-x64.tar.xz #解压
./bin/node -v
v14.16.1

解压文件的 bin 目录底下包含了 node、npm 等命令,我们可以使用 ln 命令来设置软连接:

ln -s /nodejs/node-v14.16.1-linux-x64/bin/node /usr/local/bin/
ln -s /nodejs/node-v14.16.1-linux-x64/bin/npm /usr/local/bin/

安装cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org #安装 版本不兼容时,可以指定版本 npm install -g cnpm@6.2.0 --registry=https://registry.npm.taobao.org
ln -s /nodejs/node-v14.16.1-linux-x64/bin/cnpm /usr/local/bin/#设置软连接

三、测试

完成以上步骤,打开cmd命令,输入以下命令可以得到版本信息。

$ npm -v #原有的npm版本
 6.14.12
$ node -v #nodejs版本
 v14.16.1
$ cnpm -v #阿里仓库的版本

   cnpm@6.2.0 (/nodejs/node-v14.16.1-linux-x64/lib/node_modules/cnpm/lib/parse_argv.js)
   npm@6.14.13 (/nodejs/node-v14.16.1-linux-x64/lib/node_modules/cnpm/node_modules/npm/lib/npm.js)
   node@14.16.1 (/nodejs/node-v14.16.1-linux-x64/bin/node)
   npminstall@3.28.0 (/nodejs/node-v14.16.1-linux-x64/lib/node_modules/cnpm/node_modules/npminstall/lib/index.js)
   prefix=/tool/nodejs/node-v14.16.1-linux-x64
   linux x64 3.10.0-1160.6.1.el7.x86_64
   registry=https://registry.nlark.com

 四、运行

$ npm init #创建nodejs项目

会自动生成package.json文件

{
  "name": "demo",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

下载Express框架,用于请求数据

$ npm install express --save-dev
或者
$ pnpm install express

下载connect-history-api-fallback插件,用于前端的history

$ npm i connect-history-api-fallback

下载http-proxy-middleware代理中间件,访问后端数据时,避免与前端api混淆

$ npm i http-proxy-middleware

在main.js加入

//引用模块
var express = require('express');
//引入connect-history-api-fallback
const history = require('connect-history-api-fallback');
//引入代理中间件
const {createProxyMiddleware} = require('http-proxy-middleware')
// 调用express,创建一个app 服务实例对象
var app = express();
// 注意:必须写在指定静态资源前, 使用了history这个中间件就会导致get请求全部变成index,导致get请求没执行,这个时候rewrites就可以了
app.use(history(
  rewrites:[
    from: /^\/api\/.*$/,
    to: function(context) {
      return context.parsedUrl.path;
    }
  ]
))
//静态资源直接访问 //如dist/js/jquery.js 访问路径为 http://localhost/js/jquery.js 在script标签中src="js/jquery.js" app.use(express.static('dist')) //代理api var apiProxy = createProxyMiddleware({ target: 'http://127.0.0.1:8085/', changeOrigin: true, pathRewrite: { "^/v":"" } }); //本地调用时,带有/v请求,重定向代理apiProxy app.use('/v',apiProxy); //app.get('/',function(req,res){ // res.sendFile( __dirname + "/index.html" ); //}) //端口 app.listen(3001, function () { console.log(process.pid); console.log('nodejs connect successfully'); }); process.on('uncaughtException', function (err) { console.log('Caught Exception:' + err);//直接捕获method()未定义函数,Node进程未被退出。 });

 

最后运行项目

$ node main.js

 

posted @ 2021-05-22 11:17  Auler  阅读(131)  评论(0编辑  收藏  举报