Базовый URL не меняется в зависимости от ссылки - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть жестко закодированные JSON данные, которые отображаются при запуске приложения, и я использую JSON -schema-faker, чтобы получить некоторые данные mockApi и отображать их, когда я устанавливаю для параметра запроса useMockApi значение true. Я хочу ссылку изменить в зависимости от среды, но когда я устанавливаю true для useMockApi, это дает мне эту ошибку

import { getUsers, deleteUser } from "./api/userApi.js";



getUsers().then(result => {
    let userBody = "";

    result.forEach(user => {
        userBody += `<tr>       
        <td><a href="#" id="${user.id}"  class="del">Delete </a></td>
        <td>${user.id}</td>
        <td>${user.firstName}</td>
        <td>${user.lastName}</td>
        <td>${user.email}</td>
        </tr>`
    });
    global.document.getElementById('users').innerHTML = userBody;

    const deleteLinks = document.querySelectorAll('.del');

    Array.from(deleteLinks, link => {
        link.onclick = (event) => {
            const element = event.currentTarget;
            event.preventDefault();

            deleteUser(element.id) //eslint-disable-line no-console
            const row = element.parentNode.parentNode;
            row.remove();
        }
    })

})

Не удалось выполнить «извлечение» в «Окне»: не удалось проанализировать URL-адрес из http://localhost: 5000users

это мой код

/* eslint-disable no-unused-vars */
import "whatwg-fetch";

import getBaseUrl from './baseUrl';

const baseurl = getBaseUrl();

export function getUsers() {
    return get('users');
}

export function deleteUser(id) {
    return del(`users/${id}`)
}

function get(url) {
    return fetch(baseurl + url).then(onSuccess, onError);
}

function del(url) {
    const request = new Request(`${baseurl}/${url}`, {
        method: 'DELETE'
    });
    return fetch(request).then(onSuccess, onError)

}

function onSuccess(response) {
    return response.json();
}

function onError(err) {
    console.log(err); //eslint-disable-line no-console
}

export default function getBaseUrl() {
    return getQueryStringParameterByName('useMockApi') ? 'http://localhost:5000' : '/';
}


function getQueryStringParameterByName(name, url) {
    if (!url) {
        url = window.location.href;
    }


    name = name.replace(/[\[\]]/g, "\\$&")
    var regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';

    return decodeURIComponent(results[2].replace(/\+/g, " "))
}

1 Ответ

0 голосов
/ 17 апреля 2020

Попробуйте добавить форвард слэ sh после localhost:5000

return getQueryStringParameterByName('useMockApi') ? 'http://localhost:5000/' : '/';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...