学前端,找工作,点这里。
1. 在你的nodejs项目路径下初始化
npm init
然后一路回车就可以了,只不过这样的话启动文件必须是app.js,想改的话不要一路回车,因为中途会有个输入文件名的提示
2. 使用npm包管理器安装express和http中间件代理模块
npm install express http-proxy-middleware --save-dev
3. 新建app.js,输入如下代码
var express = require('express');
const proxy = require('http-proxy-middleware');
const app = express();
app.set('port', '809'); // 你NodeJs代理端口var options = {
target: 'http://localhost:8090', // 你服务器端口
changeOrigin: true,
};
var exampleProxy = proxy(options);
app.use('/', exampleProxy); // ‘/’ 表示对所有请求代理
app.listen(app.get('port'), () => {
console.log(`server running @${app.get('port')}`);
});
弄完后结构大致是这样的
4. 启动NodeJs
node app.js
再次请求8090端口,这次果然好了....... 不对,好像还有什么问题
报错 No 'Access-Control-Allow-Origin' header ,原来是809、8090请求跨了端口 ,属于跨域问题
NodeJs解决跨域请求
将上面的代码添加跨域处理部分,代码如下
var express = require('express');
const proxy = require('http-proxy-middleware');
const app = express();
app.set('port', '809');app.all('*', function (req, res, next) { // 解决跨域问题
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
if (req.method == "OPTIONS") {
res.send(200);
} else {
next();
}
});var options = {
target: 'http://localhost:8090',
changeOrigin: true,
};
var exampleProxy = proxy(options);
app.use('/', exampleProxy);
app.listen(app.get('port'), () => {
console.log(`server running @${app.get('port')}`);
});
再次启动NodeJs,发现问题已经没了
其他
再次启动NodeJs时可能会报错端口占用,虽然挺好解决但是还是提一下,使用 lsof -i:809 可以找出809端口进程的PID,然后用kill -9 干掉即可
如果直接node app.js启动此时终端是卡住的,一按键就可能断开,也干不了其他事,这里可以使用 & 开启后台进程
node app.js &
后面加一个 & 表示启用后台进程,这样你就可以不用管它了,当然,如果你是宝塔面板,你也可以用PM2管理你的NodeJs项目
点击启动即可