使用electron, 将项目打包成离线应用。使用file协议,在本地读取静态资源。但是ajax请求如果用相对路径,打包之后,会直接找到根目录。
// main.js
const winURL = process.env.NODE_ENV === 'development'
? `http://localhost:8080`
: `file://${__dirname}/index.html`
mainWindow.loadURL(winURL)
// api.js
export function loginByUsername(username, password) {
const data = {
username,
password
}
return request({
url: '/ntwechat/login/login',
method: 'get',
params: {
name: username,
password: password
}
})
}
此时network的request url 为 file:///D:/ntwechat/login/login?name=nt&password
需要给ajax提供完整的url路径, 如 http: www.xxx.com/ntwechat/login/login
,
但是这样的工作量太大了, 我想知道 electron 有没有拦截url的东西。
通过查找 发现了 electron 的 session 模块
const {session} = require('electron')
session.defaultSession.webRequest.onBeforeRequest(filter, (details, callback) => {
details.url = details.url.replace(/.*\/ntwechat\//ig, 'http://localhost:8080/ntwechat/')
callback({cancel: false, url: details.url});
})
但是我还是没办法改变 请求的 request url
请问有什么办法, 能简便的解决这个问题吗
改router-> mode:'hash',你试试看,我是这样解决的。