配置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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!