Меню

Cannot read property url of undefined ошибка wink

From a short tutorial I started this widget script to grab posts on Blogger. In the theme I originally made it in, it works fine without error. However, when I try to use the exact same code in a new template I’m working on, it throws the error:

Uncaught TypeError: Cannot read property ‘url’ of undefined

For the love of god I cannot figure out why it’s doing that. For debugging purposes I tried removing all other scripts, placing the code right after the <body> tag and just before the </body> tag.

I really don’t know anything about scripting and did this widget as a starting point in learning, but it’s been months since I messed with it. Looking at it now I just don’t see the problem. Here is the script:

<script type="text/javascript">
    //<![CDATA[
    function postGrabber(json) {

        // The Magic
        for (var i = 0; i < json.feed.entry.length; i++) {
            for (var j = 0; j < json.feed.entry[i].link.length; j++) {
                if (json.feed.entry[i].link[j].rel == 'alternate') {
                    var postUrl = json.feed.entry[i].link[j].href;
                    break;
                }
            }

            // Thumbnail Stuff
            var orgImgUrl = json.feed.entry[i].media$thumbnail.url ? json.feed.entry[i].media$thumbnail.url : 'http://1.bp.blogspot.com/-mxinHrJWpBo/VD6fqbvI74I/AAAAAAAAcn8/LslulDeOROg/s72-c/noimage-chalkboard.jpg';
            var newImgUrl = orgImgUrl.replace('s72-c', 's' + imgSize + '-c');
            var imgTag = '<a class="item-link-post" href="' + postUrl + '"><img class="item-img-thumbnail" src="' + newImgUrl + '" width="' + imgSize + '" height="' + imgSize + '"/></a>';

            var authorName = json.feed.entry[i].author[0].name.$t;
            var authorURL = json.feed.entry[i].author[0].uri.$t;
            var authorOriImgUrl = json.feed.entry[i].author[0].gd$image.src;
            var authorNewImgUrl = authorOriImgUrl.replace('s512-c', 's' + authorImgSize + '-c');
            var authorImgTag = '<a class="item-link-author" href="' + authorURL + '" target="_blank" rel="nofollow"><img class="item-img-author" src="' + authorNewImgUrl + '" alt="' + authorName + '"/></a>';

            // Standard Stuff
            var postTitle = json.feed.entry[i].title.$t;
            var postCommentCount = json.feed.entry[i].thr$total.$t;

            var postSummary = json.feed.entry[i].summary.$t;
            var entryShort = postSummary.substring(0, '' + summaryLength + '');
            var entryEnd = entryShort.lastIndexOf(" ");
            var postContent = entryShort.substring(0, entryEnd) + '...';

            var postDate = json.feed.entry[i].updated.$t ? json.feed.entry[i].updated.$t : json.feed.entry[i].published.$t;
            var shortDate = postDate.substring(0,10);

            // Let's Make Options Here
            var toggleImg = showImg ? '' + imgTag + '' : '';
            var toggleTitle = showTitle ? '<h1 class="item-title">' + postTitle + '</h1>' : '';
            var toggleSummary = showSummary ? '<p class="item-snippet">' + postContent + '</p>' : '';
            var toggleDate = showDate ? '<span class="item-date">' + shortDate + '</span>' : '';
            var toggleAuthorImg = showAuthorImg ? '' + authorImgTag + '' : '';
            var toggleCommentCount = showCommentCount ? '<span class="item-comment-count">' + postCommentCount + '</span>' : '';

            // The Output
            var itemPost = '<div class="item-post"><div class="item-imgs">' + toggleImg + toggleAuthorImg + '</div>' + toggleCommentCount + '<a class="item-link" href=' + postUrl + '>' + toggleTitle + '</a>' + toggleSummary + toggleDate + '</div>';

            // Let's Write It Down
            document.write(itemPost);
        }
    }
    //]]>
</script>
<script type="text/javascript">
    // The Default Options
    var imgSize = 96;
    var summaryLength = 142;
    var authorImgSize = 36;
    var showImg = true; 
    var showTitle = true; 
    var showSummary = true; 
    var showDate = true;
    var showAuthorImg = true;
    var showCommentCount = true;
</script>
<script src="/feeds/posts/summary?orderby=published&amp;max-results=5&amp;alt=json-in-script&amp;callback=postGrabber"></script>

Hi
Having some issues with autoUpdate.
It find’s the update but before it’s going to download the update it gives me a error

TypeError: Cannot read property ‘url’ of undefined
cant find out why it’s giving me this error

Version:
electron-updater = 2.16.1
electron = 1.7.9
electron-builder = 19.46.9

package.json

{
  "name": "Wired",
  "version": "0.1.0",
  "description": "Home assistant",
  "repository": {
    "type": "git",
    "url": "https://github.com/andrewo0/wired.git"
  },
  "scripts": {
    "postinstall": "install-app-deps"
  },
  "dependencies": {
    "electron-updater": "^2.16.1",
    "electron-log": "^1.3.0"
  },
  "devDependencies": {
    "electron-builder": "19.46.9",
    "electron-updater": "^2.16.1",
    "electron": "1.7.9",
    "gulp": "^3.9.1",
    "mocha": "^4.0.1",
    "spectron": "^3.7.2",
    "webpack-stream": "^3.2.0"
  },
  "build": {
    "appId": "com.electron.wired",
    "publish": [
      {
        "provider": "github",
        "owner": "andrewo0",
        "private": true
      }
    ],
    "win": {
      "target": "nsis"
    },
    "nsis": {
      "oneClick": false,
      "perMachine": false,
      "allowToChangeInstallationDirectory": true
    },
    "mac": {
      "category": "your.app.category.type"
    }
  }
}

index.js

const {app, BrowserWindow, Menu, protocol, ipcMain} = require('electron');
const log = require('electron-log');
const {autoUpdater} = require("electron-updater");

let window;
let path;
let json;

path = require('path');
json = require('settings.json');

autoUpdater.logger = log;
autoUpdater.logger.transports.file.level = 'info';
log.info('App starting...');

function sendStatusToWindow(text) {
  log.info(text);
  window.webContents.send('message', text);
}

function mainWindow(){
    window = new BrowserWindow({
        title: json.name,
        width: json.settings.width,
        height: json.settings.height,
        frame: json.settings.frame,
        titleBarStyle: json.settings.titlebarstyle,
        backgroundColor: '#000000',
        show: false
    });

    window.loadURL('file://' + path.join(__dirname, '..', '..') + '/index.html#v' + app.getVersion());
    
    window.once('ready-to-show', () => {
        window.show()
    })

    window.on('closed', function () {
        window = null;
    });
    
    return window;
}
app.on('ready', function()  {
  autoUpdater.checkForUpdates();
});
autoUpdater.on('checking-for-update', () => {
  sendStatusToWindow('Checking for update...');
})
autoUpdater.on('update-available', (info) => {
  sendStatusToWindow('Update available.');
})
autoUpdater.on('update-not-available', (info) => {
  sendStatusToWindow('Update not available.');
})
autoUpdater.on('error', (err) => {
  sendStatusToWindow('Error in auto-updater. ' + err);
})
autoUpdater.on('download-progress', (progressObj) => {
  let log_message = "Download speed: " + progressObj.bytesPerSecond;
  log_message = log_message + ' - Downloaded ' + progressObj.percent + '%';
  log_message = log_message + ' (' + progressObj.transferred + "/" + progressObj.total + ')';
  sendStatusToWindow(log_message);
})
autoUpdater.on('update-downloaded', (info) => {
  sendStatusToWindow('Update downloaded');
});

app.on('ready', function () {
    mainWindow();
});
app.on('window-all-closed', () => {
  app.quit();
});

Log:

[2017-11-30 09:38:00:0536] [info] App starting...
[2017-11-30 09:38:00:0607] [info] Checking for update
[2017-11-30 09:38:00:0607] [info] Checking for update...
[2017-11-30 09:38:01:0926] [info] Generated new staging user ID: 
[2017-11-30 09:38:03:0907] [info] Found version 0.1.1 (url: Wired-Setup-0.1.1.exe)
[2017-11-30 09:38:03:0907] [info] Update available.
[2017-11-30 09:38:03:0908] [info] Downloading update from Wired-Setup-0.1.1.exe
[2017-11-30 09:38:03:0912] [error] Error: TypeError: Cannot read property 'url' of undefined
    at updateInfo.files.map.it (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcPrivateGitHubProvider.ts:101:63)
    at Array.map (native)
    at PrivateGitHubProvider.resolveFiles (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcPrivateGitHubProvider.ts:98:29)
    at C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcNsisUpdater.ts:19:53
From previous event:
    at NsisUpdater.doDownloadUpdate (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updateroutNsisUpdater.js:133:11)
    at C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcAppUpdater.ts:304:25
    at Generator.next (<anonymous>)
From previous event:
    at NsisUpdater.downloadUpdate (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updateroutAppUpdater.js:355:11)
    at C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcAppUpdater.ts:280:49
From previous event:
    at NsisUpdater.doCheckForUpdates (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updateroutAppUpdater.js:326:11)
    at C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcAppUpdater.ts:228:25
    at Generator.next (<anonymous>)
    at runCallback (timers.js:672:20)
    at tryOnImmediate (timers.js:645:5)
    at processImmediate [as _immediateCallback] (timers.js:617:5)
From previous event:
    at NsisUpdater._checkForUpdates (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updateroutAppUpdater.js:280:11)
    at NsisUpdater.checkForUpdates (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcAppUpdater.ts:177:35)
    at App.<anonymous> (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarjavascriptsmainindex.js:45:15)
    at emitTwo (events.js:111:20)
    at App.emit (events.js:194:7)
[2017-11-30 09:38:03:0912] [info] Error in auto-updater. TypeError: Cannot read property 'url' of undefined

При отладке своего кода (обычно на JavaScript) программист может столкнуться с системным сообщением об ошибке «TypeError: Cannot read property ‘xxx’ of undefined». Вместо значения ХХХ указана какая-либо объявленная переменная или свойство объекта, значение которых по различным причинам не задано разработчиком. Ниже разберём, каков перевод данного сообщения, и каково может быть решение возникшей проблемы.

Ошибка TypeError

Содержание

  1. Почему возникает ошибка
  2. Присвойте начальное значение переменной
  3. Улучшите связность вашего кода
  4. Проверьте наличие свойства
  5. Деструктурируйте доступ к свойствам нужного объекта
  6. Заключение

Почему возникает ошибка

В переводе данное сообщение выглядит как «Ошибка типа: Не удаётся прочитать неопределённое свойство ХХХ». Поскольку в некоторых языках программирования (в частности, «JavaScript») есть возможность получения доступа к неинициализированным значениям, то это может вызывать появление рассматриваемой мной ошибки.

Что до причин ошибки undefined, то она обычно возникает при отладке какого-либо программного кода, и может быть вызвана следующими факторами:

  • Использующиеся в программном коде переменная не была инициализирована (переменной не присвоено значение);
  • Была осуществлена попытка доступа к отсутствующему свойству объекта;
  • Была попытка получить доступ к отсутствующему элементу массива.

Давайте разберёмся, как исправить данную ошибку при написании вашего кода.

Фото реппера и слов об ошибке

Читайте также: Failed to execute ‘replaceChild’ on ‘Node’  на JavaScript – как исправить.

Присвойте начальное значение переменной

Наиболее очевидным способом исправить ошибку «TypeError: Cannot read property ‘xxx’ of undefined» является присвоение переменной начального значения. Чем меньше такая переменная пребывает в неинициализированном состоянии – тем будет лучше. В идеале лучше сразу же присвоить значение «Variable» = «начальное значение» (‘initial’), хотя далеко не всегда специфика вашего кода может предполагать указанный вариант.

Улучшите связность вашего кода

Термин «связность» в нашем контексте характеризует уровень взаимосвязанности элементов разрабатываемого вами модуля (пространства имён, метода, класса, блока кода). Как известно, существуют два типа связности, а именно сильная и слабая связность. Использование сильной связности предполагает фокусировку элементов модуля лишь на одной задаче. Потому для извлечения выгоды из сильной связности, необходимо держать используемые переменные поближе к блоку кода, в работе которого они используются.

К примеру, вместо блока кода:

Блок кода

будет оптимальнее переместить переменные поближе к месту их применения:

Конечный блок кода

Улучшение связности позволит избежать появление ошибки «Cannot read property ‘xxx’ of undefined» при отладке вашего кода.

Проверьте наличие свойства

В языке Javascript имеются ряд инструментов, позволяющих определить, имеет ли необходимый нам объект какое-либо свойство:

В частности, это:

  • typeof obj.prop !== ‘undefined’ — данный инструмент позволяет проверить тип значения свойства;
  • obj.prop !== undefined — этот инструмент позволяет сравнить объект непосредственно с undefined;
  • ‘prop’ in obj позволяет проверить объект на наличие его собственного или полученного свойства;
  • И obj.hasOwnProperty(‘prop’) позволяет проверить объект на наличие его собственного свойства.

В этом и схожих случаях рекомендуется использовать оператор in, который обладает простым и удобным синтаксисом. Наличие оператора in демонстрирует желание проверить, имеет ли объект нужное свойство без обращения к фактическому значению данного свойства.

Деструктурируйте доступ к свойствам нужного объекта

Деструктурирование нужного объекта позволяет непосредственно извлекать значения свойства объекта в переменные или, если такое свойство не существует, устанавливать значение по дефаулту. Такой вариант позволяет исключить прямой контакт с undefined.

Извлечение свойств теперь выглядит примерно так:

программный код

Деструктурирование хорошо, когда можно указать значение по умолчанию, и это значение будет возвращено при попытке доступа к отсутствующему свойству. В конечном счёте, благодаря деструктурированию вы сможете избежать появления undefined и всех сопутствующих проблем.

Это интересно: что означает «JavaScript error: Mutations are not initialized.

Заключение

В нашей статье мы разобрали, почему появляется ошибка «TypeError: Cannot read property ‘xxx’ of undefined», как она переводится и как от неё можно избавиться. Во избежание возникновения данной ошибки присвойте начальное значение соответствующей переменной. Это позволит избежать появления рассмотренной выше дисфункции при отладке вашего кода.

Допустим, вы делаете страницу с формой и полем ввода:

<form name="myform">
  <input name="myinput" value="10" />
</form>

Нужно, чтобы скрипт нашёл эту форму, достал из неё значение поля ввода и вывел его на экран. Вы пишете скрипт и оформляете его как отдельный файл, который подключаете в разделе head:

<script>
  var str = '';
  for(i=0; i < document.myform.elements.length; i++){
     str += document.myform.elements[i].name +
'=' + encodeURIComponent(document.myform.elements[i].value) +
(i == document.myform.elements.length -1 ? '' : '&');
}
  alert(str);
</script>

Этот скрипт должен быть правильным. При тестировании внутри консоли он делает именно то, что нужно. Но после запуска скрипт падает с ошибкой:

❌ Uncaught TypeError: Cannot read property

Это означает: «Вы пытаетесь прочитать у объекта какое-то свойство, но я не могу его найти, а значит, не могу и прочитать то, чего нет».

Странно, ведь вы уверены, что у этого объекта такое свойство точно есть, и вы сто раз так уже делали.

Всё так и одновременно не так.

Что делать с ошибкой Uncaught TypeError: Cannot read property

Эта ошибка чаще всего происходит, когда вы обращаетесь к свойствам объекта раньше, чем объект готов:

  • Скорее всего, объект ещё не загрузился.
  • Может быть, этот объект должен появиться на странице по скрипту, который ещё не выполнился.
  • Допущена опечатка в названии объекта, поэтому при обращении к нему скрипт его не находит.

Наш случай — первый и самый распространённый: мы вызываем скрипт в разделе <head>, но форма у нас ещё не готова — она банально не загружена в документ, поэтому скрипт не может прочитать свойства несуществующей формы.

Чтобы избавиться от этой ошибки, нужно добавить в вызов скрипта атрибут defer — он заставит скрипт подождать, пока страница загрузится полностью, вместе с формой.

<script defer src="...">

Второй вариант — поместить вызов скрипта сразу после формы, тогда к моменту вызова всё окажется на своих местах и ошибки не будет. Или вообще в конце всего документа.

Электронные подписи используются в течение последнего десятилетия всё чаще. Благодаря им, нет необходимости посещать локацию заключения сделки, чтобы подтвердить документы. Всё можно сделать дистанционно, находясь в любой точке мира — главное, чтобы были компьютер и интернет. Это улучшает комфортность и даёт новые возможности бизнесу, а также ЭЦП безопасны и надёжны, ведь подделать их невозможно.

Однако иногда бывает, что техника подводит, и появляются какие-либо сложности с использование электронно-цифровой подписи. И эти проблемы обычно негативно влияют на бизнес, задерживают его. В этой статье рассмотрим ошибку Cannot read properties of undefined (reading ‘CreateObjectAsync’), которая возникает при подтверждении документов на сайте Госзакупок. Узнаем, как решить эту проблему максимально быстро и самостоятельно, начав от простых действий.

Содержание

  1. Перезагрузка компьютера
  2. Переход на другой браузер
  3. Установка расширения CryptoPro Extension for CAdES Browser Plug-in
  4. Переустановка КриптоПро ЭЦП
  5. Обновление сертификатов в КриптоПро ЭЦП
  6. Отключение расширения браузера
  7. Отключение антивируса
  8. Обновление браузера

ЭЦП

Перезагрузка компьютера

Перезагрузка — панацея от многих компьютерных проблем. Это самое быстрое, что можно сделать, если что-то работает не так, как надо и в большинстве случаев это простое действие действительно помогает. Поэтому начните с перезагрузки вашего компьютера.

Во время этого перезагрузится не только компьютер, но также и браузер, в котором вы пользовались Госзакупками, и программа КриптоПро ЭЦП, что тоже может помочь решить проблему. После успешной загрузки компьютера попробуйте снова совершить действие, при котором появилась ошибка Cannot read properties of undefined (reading ‘CreateObjectAsync’).

Переход на другой браузер

Некоторые пользователи советуют использовать браузер Спутник или Internet Explorer. Первый вариант рекомендуется больше. Скачивать и устанавливать необходимо не просто браузер Спутник, а ту версию, которая поддерживает криптографию https://www.sputnik-lab.com/news/suspend.

Internet Explorer тоже некоторым помог решить эту ошибку. Но этот вариант немного хуже, чем Спутник, потому что данный браузер больше не поддерживается разработчиком и в последних версиях Windows его нет. Однако по мнению многих, он лучше всех работает с сайтами, подобным Госзакупкам.

Установка расширения CryptoPro Extension for CAdES Browser Plug-in

При появлении ошибки Cannot read properties of undefined (reading ‘CreateObjectAsync’) некоторым помогло расширение CryptoPro Extension for CAdES Browser Plug-in. Это расширение для браузера Google Chrome и оно будет работать только в нём. Установите его, а потом попробуйте снова подтвердить документ на Госзакупках.

Цифровая подпись

Переустановка КриптоПро ЭЦП

КриптоПро ЭЦП — это программа, которая устанавливается на компьютер. Она обеспечивает связь между сайтом, где происходит подтверждение документов, и электронными сертификатами подписей, которые хранятся на компьютере. Естественно, что если в этой программе сбой, то подтвердить документы не получится и появится ошибка.

Поэтому, если описанные способы не помогают, то рекомендуется переустановить КриптоПро ЭЦП. Для этого её надо сначала удалить с компьютера, а потом скачать с сайта разработчика и установить заново https://www.cryptopro.ru/products/cades/plugin. Если вы затрудняетесь удалить программу, то попробуйте просто установить её заново, тогда программа заменит все свои файлы на компьютере и это с большой вероятностью тоже поможет решить проблему с ошибкой.

Обновление сертификатов в КриптоПро ЭЦП

КриптоПро ЭЦП знает о сертификатах ровно столько, сколько ей укажет пользователь компьютера. Программа запоминает указанные пути хранения сертификатов. Если сертификаты на компьютере были переносы в другое месте или если произошёл какой то сбой от которого КриптоПро ЭЦП потеряла пути их хранения, то нужно указать их заново.

Для этого откройте приложение КриптоПро ЭЦП и перейдите в раздел “Сервис”. Нажмите на кнопку “Обзор” и заново укажите путь на файл сертификата”.Путь на сертификат

Отключение расширения браузера

Расширения браузера, даже полезные, могут мешать работать КриптоПро ЭЦП. Поэтому рекомендуется их временно отключить и попробовать подтвердить документ на Госзакупках заново.

Даже если вы не устанавливали в браузер новые расширения, всё равно следует их отключить. Потому что некоторые расширения обновляются и меняют свой алгоритм работы, а также часто бывает, что пользователь случайно и не замечая того, сам устанавливает расширения в свой браузер.

Отключение антивируса

Многие пользователи знают, что антивирусы часто срабатывают ложно. И даже совершенно безобидные файлы помечают как вредоносные. Это приводит к нарушению работы некоторых программ, и с КриптоПро ЭЦП это тоже может быть.

Поэтому на время пользования КриптоПро ЭЦП, если появляется ошибка, рекомендуется отключать антивирус. Также рекомендуется переустановить КриптоПро ЭЦП именно с отключенным антивирусом.

Вам будет это интересно: Чем опасна электронная подпись для физических лиц?

Обновление браузера

Современные браузеры часто обновляются. Это делается не только для того, чтобы улучшить его функциональность и добавить новые возможности, но и для защиты. Потому что новые способы взломов и атак появляются тоже часто. Когда дело касается ЭЦП, безопасность на первом месте. Поэтому программа КриптоПро ЭЦП может не работать с устаревшей версией браузера. Обновление браузера в этом случае решает проблему.

Кстати, на компьютерах с устаревшей версий Windows XP обновить браузер не получится, потому что разработчики перестали поддерживать эту операционную систему. Однако, несмотря на это, ею всё ещё некоторые пользуются. В этом случае нужно использовать более современный компьютер, чтобы установить на него актуальную версию браузера.

Если при подписании на сайте ЕИС (ЕРУЗ) https://zakupki.gov.ru/ возникает ошибка «Cannot read properties of undefined (reading ‘CreateObjectAsync’)», мы рекомендуем в первую очередь использовать браузер Chromium GOST, так как ЕИС корректно работает именно в нём. Если вы планируете работать в Яндекс.Браузере — необходимо выполнить дополнительные настройки.

Если вы хотите использовать другой браузер, в котором возникает эта ошибка — рекомендуем обратиться в техническую поддержку ЕИС для уточнения сроков исправления ошибки в нужном для вас браузере.

Настройте для работы браузер Chromium GOST

1. ​Установите браузер:

  • Автоматически с нашего Веб-диска. После установки переходите к пункту 2 инструкции.
  • Вручную по ссылке https://github.com/deemru/Chromium-Gost/releases/. На открывшейся странице выберите версию браузера, которая соответствует разрядности вашей операционной системы, разрядность вашей системы можно определить следующими способами:
    а) Нажать правой кнопкой мыши на Мой компьютер — Свойства.
     б) Нажать комбинацию клавиш Win+Pause.
      в) Нажать правой кнопкой мыши на Пуск — Система.
       г) Воспользоваться инструкцией от Microsoft.


Запустите скачанный файл и следуйте подсказкам на экране для установки

2. Запустите браузер Chromium GOST и откройте в нём ссылку https://chrome.google.com/webstore/detail/cryptopro-extension-for-c/iifchhfnnmpdbibifmljnfjhpififfog. Проверьте, что расширение с открывшейся страницы установлено (должна отобразиться кнопка «Удалить из Chrome»):

Если вы видите кнопку «Установить» — нажмите её для установки расширения:

3. Повторите подписание документов в ЕИС

Настроить для работы Яндекс.Браузер

1. Скачайте браузер по ссылке https://browser.yandex.ru/ . Если Яндекс.Браузер уже установлен и ранее ЕИС (ЕРУЗ) работал в нём корректно, то переходите к пункту 4.

2. В Яндекс.Браузере зайдите в раздел «Настройки» — «Системные», либо откройте в нем ссылку: browser://settings/system

Включите настройку «Подключаться к сайтам, использующим шифрование по ГОСТ. Требуется КриптоПро»:

3. Установите расширение https://chrome.google.com/webstore/detail/cryptopro-extension-for-c/iifchhfnnmpdbibifmljnfjhpififfog так же, как это описано ранее в инструкции про Chromium GOST.

4. Повторите подписание в ЕИС. Если ошибка сохранилась, для нормальной работы портала в Яндекс.Браузере нужно выключить расширение из каталога Opera: 


Откройте «Настройки» — «Дополнения», либо откройте в браузере ссылку browser://tune/

Отключите расширение Каталог КриптоПро ЭЦП переведя ползунок в левое положение:

Внимание! Изменение этой настройки может негативно повлиять работу на некоторых сайтах, например на www.sberbank-ast.ruwww.rts-tender.ru и https://etp.gpb.ru/ . Решение об отключении вы принимаете самостоятельно!

Перезапустите браузер и повторите подписание в ЕИС.

Getting this error when running server.js.

Started http server.
   info  - socket.io started

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
TypeError: Cannot read property 'url' of undefined
    at Function.handle (/opt/lampp/htdocs/notifications/sites/all/modules/nodejs/node_modules/express/node_modules/connect/lib/proto.js:105:18)
    at Server.app (/opt/lampp/htdocs/notifications/sites/all/modules/nodejs/node_modules/express/node_modules/connect/lib/connect.js:60:31)
    at Server.serverListening (/opt/lampp/htdocs/notifications/sites/all/modules/nodejs/node_modules/socket.io/node_modules/policyfile/lib/server.js:136:16)
    at Server.g (events.js:156:14)
    at Server.emit (events.js:64:17)
    at Array.0 (net.js:777:10)
    at EventEmitter._tickCallback (node.js:192:40)

This is the output of npm install

require@0.4.9 ./node_modules/require 
└── uglify-js@1.0.3
express@3.0.0alpha1 ./node_modules/express 
├── mime@1.2.5
├── commander@0.5.2
├── mkdirp@0.3.1
├── debug@0.6.0
└── connect@2.1.2
socket.io@0.9.6 ./node_modules/socket.io 
├── policyfile@0.0.4
├── redis@0.6.7
└── socket.io-client@0.9.6

And this is my config file:

backendSettings = {
  "scheme":"http",
  "host":"localhost",
  "port":8080,
  "resource":"/socket.io",
  "publishUrl":"/notifications/nodejs/publish",
  "serviceKey":"54468779wifjo78fjwijowef",
  "backend":{
  	"port":80,
  	"host":"localhost",
  	"messagePath":"/nodejs/message"
  },
  "clientsCanWriteToChannels":false,
  "clientsCanWriteToClients":false,
  "extensions":"",
  "debug":true,
  "transports":["websocket",
  "flashsocket",
  "htmlfile",
  "xhr-polling",
  "jsonp-polling"],
  "jsMinification":true,
  "jsEtag":true,
  "logLevel":1};

Thanks in advance

Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Posted August 30, 2017 4:34pm by Nick Trabue

I’m getting this error no matter what I try to change to fix it. As far as I can tell I’ve matched Guil’s code completely

import React from 'react';
import {Route, NavLink, Redirect
} from 'react-router-dom';
//App Components
import HTML from './courses/HTML';
import CSS from './courses/CSS';
import JavaScript from './courses/JavaScript';

const Courses = ({match}) => (
  <div className="main-content courses">
    <div className="course-header group">
      <h2>Courses</h2> 
      <ul className="course-nav">
          <li><NavLink to={`${match.url}/html`}>HTML</NavLink></li>
          <li><NavLink to={`${match.url}/css`}>CSS</NavLink></li>
          <li><NavLink to={`${match.url}/javascript`}>JavaScript</NavLink></li>
      </ul>
    </div>

    {/* Write routes here... */}
      <Route exact path={match.path} render ={ () => <Redirect to={`${match.path}/html`} /> } />
      <Route path={`${match.path}/html`} component={HTML} />
      <Route path={`${match.path}/css`} component={CSS} />
      <Route path={`${match.path}/javascript`} component={JavaScript} />
  </div>
);

export default Courses;

It shows that it compiles successfully and I can view all the routes until I get to courses.
×
TypeError: Cannot read property ‘url’ of undefined
Courses
src/components/Courses.js:14
11 | <div className=»course-header group»>
12 | <h2>Courses</h2>
13 | <ul className=»course-nav»>

14 | <li><NavLink to={`${match.url}/html`}>HTML</NavLink></li>
15 | <li><NavLink to={`${match.url}/css`}>CSS</NavLink></li>
16 | <li><NavLink to={`${match.url}/javascript`}>JavaScript</NavLink></li>
17 | </ul>
View compiled
▶ 34 stack frames were collapsed.
(anonymous function)
src/index.js:6
3 | import App from ‘./components/App’;
4 | import ‘./css/index.css’;
5 |
6 | ReactDOM.render(
7 | <App />,
8 | document.getElementById(‘root’)
9 | );
View compiled
▶ 6 stack frames were collapsed.
This screen is visible only in development. It will not appear if the app crashes in production.
Open your browser’s developer console to further inspect this error.

3 Answers

Babak Bandpey

PLUS

The issue and the solution to this.

the problem occurs when I use

<Route path="/courses" render={()=><Courses />} /> 

instead of

<Route path="/courses" component={Courses} />

obviously these two behave differently. The first one does not receive the props.

Babak Bandpey

PLUS

Having the same issue. have used couple of hours to find solution, and I seem to not get why it is happening.

Nick Trabue August 30, 2017 4:41pm

This went away after adding the «Switch» piece in the next lesson. Still not sure I understand how/why.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Cannot read property tolowercase of undefined ошибка
  • Cannot read property createobjectasync of undefined ошибка при подписании