Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uncaught TypeError: Cannot read property 'substring' of undefined #125

Open
dead-claudia opened this issue Nov 12, 2018 · 3 comments
Open

Comments

@dead-claudia
Copy link
Contributor

dead-claudia commented Nov 12, 2018

[Enter steps to reproduce:]

  1. Open up a new, unsaved file in an active, non-empty repo (it need not be persisted)
  2. Type in const foo = require("../mod")
  3. Start to change foo to {bar}

Atom: 1.32.2 x64
Electron: 2.0.9
OS: Mac OS X 10.13.6
Thrown From: autocomplete-modules package 2.2.5

Stack Trace

Uncaught TypeError: Cannot read property 'substring' of undefined

At /Users/isiahmeadows/.atom/packages/autocomplete-modules/lib/lookups/export/local.js:17

TypeError: Cannot read property 'substring' of undefined
    at LocalLookup.getList (/packages/autocomplete-modules/lib/lookups/export/local.js:17:27)
    at relevantLookups.reduce (/packages/autocomplete-modules/lib/lookups/index.js:25:16)
    at Array.reduce (<anonymous>)
    at LookupApi.filterList (/packages/autocomplete-modules/lib/lookups/index.js:23:28)
    at CompletionProvider.getSuggestions (/packages/autocomplete-modules/lib/completion-provider.js:64:34)
    at n.forEach.t (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:644623)
    at Array.forEach (<anonymous>)
    at AutocompleteManager.getSuggestionsFromProviders (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:644139)
    at AutocompleteManager.findSuggestions (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:643877)
    at AutocompleteManager.requestNewSuggestions (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:652407)
    at AutocompleteManager.showOrHideSuggestionListForBufferChanges (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:653498)
    at Function.simpleDispatch (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1186984)
    at Emitter.emit (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1188425)
    at TextBuffer.emitDidChangeTextEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:501342)
    at TextBuffer.transact (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:489600)
    at TextEditor.transact (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:24215)
    at mergeIntersectingSelections (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:16150)
    at TextEditor.mergeSelections (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:39529)
    at TextEditor.mergeIntersectingSelections (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:39038)
    at TextEditor.mutateSelectedText (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:16113)
    at TextEditor.insertText (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:15662)
    at TextEditor.e.(anonymous function) [as insertText] (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:256932)
    at TextEditorComponent.didTextInput (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:93579)

Commands

     -0:17.5.0 core:close (atom-pane.pane)
     -0:14.1.0 find-and-replace:select-next (input.hidden-input)
  2x -0:07.3.0 core:undo (input.hidden-input)

Non-Core Packages

atom-beautify 0.33.4 
atom-typescript 12.6.3 
auto-detect-indentation 1.3.0 
autocomplete-modules 2.2.5 
autocomplete-paths 2.12.2 
autocomplete-racer 0.1.3 
build 0.70.0 
build-cargo 2.0.0 
busy-signal 1.4.3 
color-picker 2.3.0 
docblockr 0.13.7 
emmet 2.4.3 
eval-javascript 1.2.0 
figlet 0.5.4 
file-icons 2.1.26 
git-plus 8.1.0 
intentions 1.1.5 
language-babel 2.85.0 
language-batch 0.4.0 
language-haskell 1.17.8 
language-kotlin 0.5.0 
language-livescript 0.0.3 
language-ocaml 1.9.5 
language-pegjs 0.5.0 
language-pug 0.0.22 
language-rust 0.4.12 
language-scala 1.1.9 
language-stylus 0.2.0 
language-webassembly 1.0.1 
language-x86-64-assembly 2.2.11 
linter 2.2.0 
linter-eslint 8.4.1 
linter-tslint 1.9.1 
linter-ui-default 1.7.1 
minimap 4.29.9 
minimap-cursorline 0.2.0 
minimap-git-diff 4.3.1 
minimap-linter 2.2.1 
prettier-atom 0.55.2 
project-manager 3.3.6 
sort-lines 0.18.0 
sync-settings 0.8.6 
@jonyeezs jonyeezs added bug and removed bug labels Nov 12, 2018
@jonyeezs
Copy link
Collaborator

Hi. You mentioned it's an unsaved file.
Atom can't infer where the relative path is from the file as it's still in memory and not in an exact location.

What should be considered is a safe way for it to have its exception caught.

@jonyeezs jonyeezs added the bug label Nov 12, 2018
@dead-claudia
Copy link
Contributor Author

I get that. It still should at least tolerate an in-memory file, though.

IMHO, I feel it should just not attempt to resolve non-native modules (or at least non-global modules) if it hasn't been saved yet. fs is okay, but it shouldn't offer completions for ../lib/foo, for example. You could go either way with something like lodash, however.

@jonyeezs
Copy link
Collaborator

jonyeezs commented Nov 13, 2018 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants