refactor(share): 更新获取服务器地址相关策略

pull/13/head
moonrailgun 4 years ago
parent 5698ab88a1
commit b0a7465238

@ -5,6 +5,7 @@ import _isNil from 'lodash/isNil';
import _isFunction from 'lodash/isFunction'; import _isFunction from 'lodash/isFunction';
import { config } from '../config'; import { config } from '../config';
import { getErrorHook, tokenGetter } from '../manager/request'; import { getErrorHook, tokenGetter } from '../manager/request';
import { getServerUrl } from '../manager/server';
export type CommonRequestResult<T> = export type CommonRequestResult<T> =
| ({ | ({
@ -22,7 +23,7 @@ class RequestError extends Error {}
*/ */
export function createRequest() { export function createRequest() {
const ins = axios.create({ const ins = axios.create({
baseURL: config.serverUrl, baseURL: getServerUrl(),
}); });
ins.interceptors.request.use(async (val) => { ins.interceptors.request.use(async (val) => {

@ -1,11 +1,12 @@
import { io, Socket } from 'socket.io-client'; import { io, Socket } from 'socket.io-client';
import { config } from '../config'; import { config } from '../config';
import _isNil from 'lodash/isNil'; import _isNil from 'lodash/isNil';
import { getServerUrl } from '../manager/server';
let socket: Socket; let socket: Socket;
class SocketEventError extends Error { class SocketEventError extends Error {
name: 'SocketEventError'; name = 'SocketEventError';
} }
type SocketEventRespones<T = unknown> = type SocketEventRespones<T = unknown> =
@ -55,7 +56,7 @@ export function createSocket(token: string): Promise<AppSocket> {
} }
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
socket = io(config.serverUrl, { socket = io(getServerUrl(), {
transports: ['websocket'], transports: ['websocket'],
auth: { auth: {
token, token,

@ -3,7 +3,6 @@
*/ */
export const config = { export const config = {
serverUrl: 'http://127.0.0.1:11000',
color: [ color: [
'#333333', '#333333',
'#2c3e50', '#2c3e50',

@ -26,6 +26,7 @@ export { useMountedState } from './hooks/useMountedState';
// manager // manager
export { getStorage, setStorage, useStorage } from './manager/storage'; export { getStorage, setStorage, useStorage } from './manager/storage';
export { setTokenGetter } from './manager/request'; export { setTokenGetter } from './manager/request';
export { setServerUrl } from './manager/server';
// model // model
export { loginWithEmail, registerWithEmail } from './model/user'; export { loginWithEmail, registerWithEmail } from './model/user';

@ -0,0 +1,9 @@
import { buildRegFn } from './buildRegFn';
/**
*
*/
export const [getServerUrl, setServerUrl] = buildRegFn<() => string>(
'serverUrl',
() => 'http://127.0.0.1:11000'
);

@ -1,4 +1,9 @@
import { buildStorage, setStorage, setTokenGetter } from 'pawchat-shared'; import {
buildStorage,
setServerUrl,
setStorage,
setTokenGetter,
} from 'pawchat-shared';
import { getUserJWT } from './utils/jwt-helper'; import { getUserJWT } from './utils/jwt-helper';
const webStorage = buildStorage(window.localStorage); const webStorage = buildStorage(window.localStorage);
@ -7,3 +12,9 @@ setStorage(() => webStorage);
setTokenGetter(async () => { setTokenGetter(async () => {
return await getUserJWT(); return await getUserJWT();
}); });
if (window.localStorage.getItem('serverUrl')) {
setServerUrl(() => window.localStorage.getItem('serverUrl'));
} else if (process.env.SERVER_URL) {
setServerUrl(() => process.env.SERVER_URL);
}

@ -3,6 +3,7 @@
*/ */
import type { Configuration, WebpackPluginInstance } from 'webpack'; import type { Configuration, WebpackPluginInstance } from 'webpack';
import { DefinePlugin } from 'webpack';
import type WebpackDevServer from 'webpack-dev-server'; import type WebpackDevServer from 'webpack-dev-server';
import path from 'path'; import path from 'path';
import HtmlWebpackPlugin from 'html-webpack-plugin'; import HtmlWebpackPlugin from 'html-webpack-plugin';
@ -93,6 +94,12 @@ const config: Configuration = {
extensions: ['.tsx', '.ts', '.js', '.css'], extensions: ['.tsx', '.ts', '.js', '.css'],
}, },
plugins: [ plugins: [
new DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify(process.env.NODE_ENV),
SERVER_URL: JSON.stringify(process.env.SERVER_URL),
},
}),
new HtmlWebpackPlugin({ new HtmlWebpackPlugin({
title: 'PawChat', title: 'PawChat',
inject: true, inject: true,

Loading…
Cancel
Save