Typeerror cannot read property match of undefined что делать
npm ERR! Cannot read property ‘match’ of undefined #20954
Comments
doberkofler commented Jun 11, 2018 •
I’m opening this issue because:
What’s going wrong?
D:\MyDev\ljs_app\trunk\periscope\build>npm i
npm ERR! Cannot read property ‘match’ of undefined
When removing the package-lock.json file the installation works again.
How can the CLI team reproduce the problem?
Run npm i with the attached files
supporting information:
The text was updated successfully, but these errors were encountered:
doberkofler commented Jun 11, 2018
The error actually happens each time I use npm i now!
legodude17 commented Jun 11, 2018
doberkofler commented Jun 11, 2018
@legodude17 I’m not sure I understand on what to do? I understand that by removing the lock file, I can use npm i once again. But then it is broken again.
knownasilya commented Jun 11, 2018 •
Yeah also seeing this issue. Deleting the lock file every time is not a solution for sure 😸
Here’s my stack trace:
iarna commented Jun 13, 2018
Deleting the lock-file is not what the instruction in the community link was. The instruction is:
Delete the lock-file AND the node_modules:
Can you all retry with that?
knownasilya commented Jun 14, 2018
I tried both, the lockfile only and lockfile with node_modules. Both worked for me.
doberkofler commented Jun 14, 2018
@iarna Removing the lock file AND the node_modules folder worked for me. Only removing the lock file only worked once.
homerjam commented Jun 20, 2018 •
Can anyone help with a workaround for global modules? Installed via homebrew and can’t locate my package-lock.json anywhere!
chemzqm commented Jun 25, 2018
Get this error from time to time, should I switch to yarn?
akougblenou commented Jul 6, 2018
Still happening to me, it seemed that it was related to babel and the beta packages.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Ошибки в JavaScript и как их исправить
JavaScript может быть кошмаром при отладке: некоторые ошибки, которые он выдает, могут быть очень трудны для понимания с первого взгляда, и выдаваемые номера строк также не всегда полезны. Разве не было бы полезно иметь список, глядя на который, можно понять смысл ошибок и как исправить их? Вот он!
Ниже представлен список странных ошибок в JavaScript. Разные браузеры могут выдавать разные сообщения об одинаковых ошибках, поэтому приведено несколько примеров там, где возможно.
Как читать ошибки?
Перед самим списком, давайте быстро взглянем на структуру сообщения об ошибке. Понимание структуры помогает понимать ошибки, и вы получите меньше проблем, если наткнетесь на ошибки, не представленные в этом списке.
Типичная ошибка из Chrome выглядит так:
Теперь к самим ошибкам.
Uncaught TypeError: undefined is not a function
Связанные ошибки: number is not a function, object is not a function, string is not a function, Unhandled Error: ‘foo’ is not a function, Function Expected
Возникает при попытке вызова значения как функции, когда значение функцией не является. Например:
Эта ошибка обычно возникает, если вы пытаетесь вызвать функцию для объекта, но опечатались в названии.
Другие вариации, такие как “number is not a function” возникают при попытке вызвать число, как будто оно является функцией.
Как исправить ошибку: убедитесь в корректности имени функции. Для этой ошибки, номер строки обычно указывает в правильное место.
Uncaught ReferenceError: Invalid left-hand side in assignment
Связанные ошибки: Uncaught exception: ReferenceError: Cannot assign to ‘functionCall()’, Uncaught exception: ReferenceError: Cannot assign to ‘this’
Вызвано попыткой присвоить значение тому, чему невозможно присвоить значение.
Наиболее частый пример этой ошибки — это условие в if:
В этом примере программист случайно использовал один знак равенства вместо двух. Выражение “left-hand side in assignment” относится к левой части знака равенства, а, как можно видеть в данном примере, левая часть содержит что-то, чему нельзя присвоить значение, что и приводит к ошибке.
Uncaught TypeError: Converting circular structure to JSON
Связанные ошибки: Uncaught exception: TypeError: JSON.stringify: Not an acyclic Object, TypeError: cyclic object value, Circular reference in value argument not supported
Так как a и b в примере выше имеют ссылки друг на друга, результирующий объект не может быть приведен к JSON.
Как исправить ошибку: удалите циклические ссылки, как в примере выше, из всех объектов, которые вы хотите сконвертировать в JSON.
Unexpected token ;
Связанные ошибки: Expected ), missing ) after argument list
Интерпретатор JavaScript что-то ожидал, но не обнаружил там этого. Обычно вызвано пропущенными фигурными, круглыми или квадратными скобками.
Токен в данной ошибке может быть разным — может быть написано “Unexpected token ]”, “Expected <” или что-то еще.
Как исправить ошибку: иногда номер строки не указывает на правильное местоположение, что затрудняет исправление ошибки.
Ошибка с [ ] < >( ) обычно вызвано несовпадающей парой. Проверьте, все ли ваши скобки имеют закрывающую пару. В этом случае, номер строки обычно указывает на что-то другое, а не на проблемный символ.
Unexpected / связано с регулярными выражениями. Номер строки для данного случая обычно правильный.
Unexpected; обычно вызвано символом; внутри литерала объекта или массива, или списка аргументов вызова функции. Номер строки обычно также будет верным для данного случая.
Uncaught SyntaxError: Unexpected token ILLEGAL
Связанные ошибки: Unterminated String Literal, Invalid Line Terminator
В строковом литерале пропущена закрывающая кавычка.
Как исправить ошибку: убедитесь, что все строки имеют правильные закрывающие кавычки.
Uncaught TypeError: Cannot read property ‘foo’ of null, Uncaught TypeError: Cannot read property ‘foo’ of undefined
Связанные ошибки: TypeError: someVal is null, Unable to get property ‘foo’ of undefined or null reference
Попытка прочитать null или undefined так, как будто это объект. Например:
Как исправить ошибку: обычно вызвано опечатками. Проверьте, все ли переменные, использованные рядом со строкой, указывающей на ошибку, правильно названы.
Uncaught TypeError: Cannot set property ‘foo’ of null, Uncaught TypeError: Cannot set property ‘foo’ of undefined
Связанные ошибки: TypeError: someVal is undefined, Unable to set property ‘foo’ of undefined or null reference
Попытка записать null или undefined так, как будто это объект. Например:
Как исправить ошибку: это тоже обычно вызвано ошибками. Проверьте имена переменных рядом со строкой, указывающей на ошибку.
Uncaught RangeError: Maximum call stack size exceeded
Связанные ошибки: Uncaught exception: RangeError: Maximum recursion depth exceeded, too much recursion, Stack overflow
Обычно вызвано неправильно программной логикой, что приводит к бесконечному вызову рекурсивной функции.
Как исправить ошибку: проверьте рекурсивные функции на ошибки, которые могут вынудить их делать рекурсивные вызовы вечно.
Uncaught URIError: URI malformed
Связанные ошибки: URIError: malformed URI sequence
Как исправить ошибку: убедитесь, что вызовы decodeURIComponent на строке ошибки получают корректные входные данные.
XMLHttpRequest cannot load some/url. No ‘Access-Control-Allow-Origin’ header is present on the requested resource
Связанные ошибки: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at some/url
Эта проблема всегда связана с использованием XMLHttpRequest.
Как исправить ошибку: убедитесь в корректности запрашиваемого URL и в том, что он удовлетворяет same-origin policy. Хороший способ найти проблемный код — посмотреть на URL в сообщении ошибки и найти его в своём коде.
InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable
Связанные ошибки: InvalidStateError, DOMException code 11
Означает то, что код вызвал функцию, которую нельзя было вызывать в текущем состоянии. Обычно связано c XMLHttpRequest при попытке вызвать на нём функции до его готовности.
Как исправить ошибку: посмотрите на код в строке, указывающей на ошибку, и убедитесь, что он вызывается в правильный момент или добавляет нужные вызовы до этого (как с xhr.open ).
Заключение
JavaScript содержит в себе одни из самых бесполезных ошибок, которые я когда-либо видел, за исключением печально известной Expected T_PAAMAYIM_NEKUDOTAYIM в PHP. Большая ознакомленность с ошибками привносит больше ясности. Современные браузеры тоже помогают, так как больше не выдают абсолютно бесполезные ошибки, как это было раньше.
Какие самые непонятные ошибки вы встречали? Делитесь своими наблюдениями в комментариях.
«Cannot read property ‘match’ of undefined» during Npm install
I encountered error during building Jenkins
Jenkins Log
Task :web:npmInstall FAILED npm ERR! Cannot read property ‘match’ of undefined
npm ERR! A complete log of this run can be found in: npm ERR!
/var/lib/jenkins/.npm/_logs/2019-10-16T01_11_20_594Z-debug.log
FAILURE: Build failed with an exception.
Process ‘command ‘/var/lib/jenkins/workspace/hds_v2_docker/web/.gradle/npm/npm-v6.11.2/bin/npm» finished with non-zero exit value 1
Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0. Use ‘—warning-mode all’ to show the individual deprecation warnings. See https://docs.gradle.org/5.0/userguide/command_line_interface.html#sec:command_line_warnings
BUILD FAILED in 33s
/var/lib/jenkins/.npm/_logs/2019-10-16T01_11_20_594Z-debug.log
6 Answers 6
Try removing your package-lock.json to see if that helps.
Edit: If the issue still persists, delete node_modules as well.
I had the same error when running npm install in my repo. I don’t use Jenkins, but I found a generic approach to debugging (and ultimately resolving) this issue in NPM.
Note that in my case, the underlying issue (of the missing package.json file) appears to have been caused by me accidentally running npm install from the parent project (which uses my firebase-feedback library), while I had that library «npm linked».
Similar issues relating to npm link have happened before, but I hoped NPM would have patched these sorts of issues by now. Apparently not; though version 7 of NPM has been stated as going to have a rewrite in that area, so hopefully that will solve it long term.
You have to remove project Package-lock.json file. then try to install what you want.
The error may vary on what npm internals file it can be thrown! (And i wonder for all the possible reasons)! And it should be a bug!
(in my last case: it was on [_canPlaceDep] method of the file build-ideal-tree.js of npm!
If none of the common methods works! And that you are using nodejs v15+ and one of latest npm version! Go to the last part! The problem that i call the nodejs VERSIONS HELL! (NOTE: after reflection! For npm it may not be a version HELL! READ TO KNOW)
How to try to solve
Removing node_modules
(NOTICE: that may still not work)
You can try to remove package.lock too!
Clearing the cache
You can check my answer here (that explain it well): https://stackoverflow.com/a/52249619/7668448
Removing package.lock (which is not adviced)
Why not advised
From @DanielIM comment
No, it should not. This is «the recommended workaround» but is incredibly broken in practice. Having a locked dependency in package.json in no way ensures that dependency’s dependencies will remain consistent, so removing the package-lock.json file, npm installing, and generating a newlock file *will allow those sub-dependencies to change, which often completely breaks any future building. Using an existing lock file is often the only way to maintain builds (that is the POINT of the file, after all) so removing it completely goes against the reason for its existence.
Reinstalling nodejs or NPM
A problem can happen at npm level! Trying to reinstall can be a nice way!
To test quickly in place of reinstalling! Using NVM (nodejs version manager) and switching to another version is fast and interesting! Because we can also test for VERSION HELL PROBLEM!
If it works after switch! Then either it’s a problem with npm and a reinstallation may fix it! Or it’s a version Hell problem (a bug)!
How to reinstall fast! Again use nvm!
You can just install another version and use it! (v14 for example)
Check the VERSION HELL PROBLEM And how to use nvm to switch between versions!
The uncommon or new! THE VERSIONS HELL
In this year! I encountered many nodejs VERSIONS HELL problems! (I like to call them that) (because i gave them a name! The skies are blessing me with more) (irony)
To list them quickly:
Fix Our problem ( Cannot read property ‘matches’ of undefined )
If you are using node v15! Try with node v14 (npm v6.14.8)! That may be it! An npm bug! That’s a first thought can be! That what i thought at first!
Then reflecting a bit on it! It was like hey! When i change the version! I’m using another nodejs installation! Which can just not have the problem. A problem with npm structure or something and a re-installation may fix it (as mentioned above)!
I’m still uncapable to explain what did happen! But in short! Using NVM! To try with another version! Is a good way to go about it! You can reinstall quickly the current version too!
Big Take down (for the VERSION HELL)
Starting from nodejs v14! And v15! Or just generally! It’s nice to be skeptical about the versions! More of a reason when it doesn’t make sense! And that’s about all the problems not just npm! There is so many VERSIONS HELL problems! I encountred 2 up to now! Being alerted to the VERSIONS HELL can save you a lot of time!
How to test fast and also switch nodejs version quickly
To be fast at testing this and checking! Mostly for any internal error that will come! I’ll google it quickly! And try another version of nodejs or whatever in question (ex: typescript)! I can too debug (console.log) The internal file where the error was thrown! And try to figure out something!
For nodejs To do it quickly:
NVM to switch quickly nodejs versions (npm)
Use NVM (nvm is a version manager for node.js,)
Quick installation of version in NVM
Quick switch to another node version
(Check the doc for the details! And installation process)
For switching and testing some npm module version (ex: typescript)
If it’s a cli tool! you can install a precise version globaly
Once you verify and test you can switch back to whatever you like!
If it’s in a project! You can do the same (not globally)! use the @ syntax to precise the version!
Version specifier use SEMVER convention (https://semver.org/).
Last tip (use npx in your scripts)
It’s nice to set a version internal to the project! For example
In scripts i use npx:
When we use npx this way with a nodjes module cli tool! npx will check first if the module is available in the local node_modules! If found will use it (use global otherwise, or Download latest and run)!
So doing what i’m suggesting! Will make sure your project will run independently from whatever you have in global!
(Read more about npx if you don’t know the tool well)
TypeError: Cannot read property ‘xxx’ of undefined — Перевод и решение
При отладке своего кода (обычно на JavaScript) программист может столкнуться с системным сообщением об ошибке « TypeError: Cannot read property ‘xxx’ of undefined ». Вместо значения ХХХ указана какая-либо объявленная переменная или свойство объекта, значение которых по различным причинам не задано разработчиком. Ниже разберём, каков перевод данного сообщения, и каково может быть решение возникшей проблемы.
Почему возникает ошибка
В переводе данное сообщение выглядит как «Ошибка типа: Не удаётся прочитать неопределённое свойство ХХХ». Поскольку в некоторых языках программирования (в частности, «JavaScript») есть возможность получения доступа к неинициализированным значениям, то это может вызывать появление рассматриваемой мной ошибки.
Что до причин ошибки undefined, то она обычно возникает при отладке какого-либо программного кода, и может быть вызвана следующими факторами:
Давайте разберёмся, как исправить данную ошибку при написании вашего кода.
Присвойте начальное значение переменной
Наиболее очевидным способом исправить ошибку «TypeError: Cannot read property ‘xxx’ of undefined» является присвоение переменной начального значения. Чем меньше такая переменная пребывает в неинициализированном состоянии – тем будет лучше. В идеале лучше сразу же присвоить значение «Variable» = «начальное значение» (‘initial’), хотя далеко не всегда специфика вашего кода может предполагать указанный вариант.
Улучшите связность вашего кода
Термин «связность» в нашем контексте характеризует уровень взаимосвязанности элементов разрабатываемого вами модуля (пространства имён, метода, класса, блока кода). Как известно, существуют два типа связности, а именно сильная и слабая связность. Использование сильной связности предполагает фокусировку элементов модуля лишь на одной задаче. Потому для извлечения выгоды из сильной связности, необходимо держать используемые переменные поближе к блоку кода, в работе которого они используются.
К примеру, вместо блока кода:
будет оптимальнее переместить переменные поближе к месту их применения:
Улучшение связности позволит избежать появление ошибки «Cannot read property ‘xxx’ of undefined» при отладке вашего кода.
Проверьте наличие свойства
В языке Javascript имеются ряд инструментов, позволяющих определить, имеет ли необходимый нам объект какое-либо свойство:
В этом и схожих случаях рекомендуется использовать оператор in, который обладает простым и удобным синтаксисом. Наличие оператора in демонстрирует желание проверить, имеет ли объект нужное свойство без обращения к фактическому значению данного свойства.
Деструктурируйте доступ к свойствам нужного объекта
Деструктурирование нужного объекта позволяет непосредственно извлекать значения свойства объекта в переменные или, если такое свойство не существует, устанавливать значение по дефаулту. Такой вариант позволяет исключить прямой контакт с undefined.
Извлечение свойств теперь выглядит примерно так:
Деструктурирование хорошо, когда можно указать значение по умолчанию, и это значение будет возвращено при попытке доступа к отсутствующему свойству. В конечном счёте, благодаря деструктурированию вы сможете избежать появления undefined и всех сопутствующих проблем.
Заключение
В нашей статье мы разобрали, почему появляется ошибка «TypeError: Cannot read property ‘xxx’ of undefined», как она переводится и как от неё можно избавиться. Во избежание возникновения данной ошибки присвойте начальное значение соответствующей переменной. Это позволит избежать появления рассмотренной выше дисфункции при отладке вашего кода.
Как победить ошибку «cannot read property of undefined»?
Handle polling update error: TypeError: Cannot read property ‘user_id’ of undefined
Простой 11 комментариев
как бы да, но всеравно ХЗ что за модуль он использует для доступа к vk api. Возможно, что используемый модуль вполне умеет и user_id обрабатывать. Проблема в том, что модуль не указан, посмотреть его доку не представляется возможным. Я например не пишу ботов под вк, и не в курсе, сколько там различных либ, для доступа к API понаписали, а лезть и целенаправленно разбираться с этим вопросом мне лень)
Но все равно там вроде бы деструктуризация неправильная, для любой версии апи
почему не правильная? разве так нельзя?)))
ХЗ что за модуль он использует для доступа к vk api
Kovalsky, не поленился, глянул последнюю версию API. Действительно, метод вернет массив объектов со следующими полями:
id integer идентификатор пользователя.
first_name string имя.
last_name string фамилия.
deactivated string поле возвращается, если страница пользователя удалена или заблокирована, содержит значение deleted или banned. В этом случае опциональные поля не возвращаются.
is_closed boolean скрыт ли профиль пользователя настройками приватности.
can_access_closed boolean может ли текущий пользователь видеть профиль при is_closed = 1 (например, он есть в друзьях).
и никаких user_id в нем нет. Но все же вернет именно массив, а значит если пользователь существует, то user_info не будет undefined. То есть текущая ошибка с де структуризацией не связанна (если конечно вы не имеете ввиду то что метод вместо массива может вернуть код ошибки а у автора их обработка никак не предусмотрена), как не связанна и с тем что user_id в объекте не существует (эту ошибку он получит уже после того как решит проблему с текущей:)))