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

Content's _scroll is undefined in a lot of cases #9593

Closed
Manduro opened this issue Dec 12, 2016 · 9 comments
Closed

Content's _scroll is undefined in a lot of cases #9593

Manduro opened this issue Dec 12, 2016 · 9 comments
Labels
needs: reply the issue needs a response from the user

Comments

@Manduro
Copy link
Contributor

Manduro commented Dec 12, 2016

Note: This is a continuation of issues #9278 and #9310.

Ionic version: (check one with "x")
[ ] 1.x
[x] 2.x: 2.0.0-rc.3-201612100458

I'm submitting a ... (check one with "x")
[x] bug report
[ ] feature request
[ ] support request

Current behavior:
I'm getting a lot of these errors since RC3, and they are still there in the latest nightly:

TypeError: null is not an object (evaluating 'this._scroll.init')
File ".../main.js" line 4 col 25118 in readDimensions

TypeError: null is not an object (evaluating 'this._scroll.ev')
File ".../main.js" line 4 col 24256 in readDimensions

TypeError: null is not an object (evaluating 'this._scroll.scrollToBottom')
File ".../main.js" line 4 col 29595 in scrollToBottom

TypeError: null is not an object (evaluating 'this._scrollEle.style')
File ".../main.js" line 4 col 29911 in setScrollElementStyle

TypeError: null is not an object (evaluating 'this._scrollEle.style')
File ".../main.js" line 4 col 30395 in addScrollPadding

TypeError: Cannot read property 'style' of null
File ".../main.js" line 15025 col 28 in Content.addScrollPadding

TypeError: Cannot read property 'style' of null
File ".../main.js" line 4 col 20082 in e.setScrollElementStyle

TypeError: null is not an object (evaluating 'this._scroll.scrollToBottom')
File ".../main.js" line 4 col 19766 in scrollToBottom

Expected behavior:
_scroll should not be undefined or null when used.

Steps to reproduce:
I'm not able to reproduce this unfortunately. It seems to be a race condition only occurring in production builds, where Content's _scroll is not initialised before use.
My error reporting says these errors are only occurring on iOS.

Other information:
Related issues: #9278 #9310

Ionic info:

Cordova CLI: 6.4.0 
Ionic Framework Version: 2.0.0-rc.3-201612100458
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.46
ios-deploy version: 1.9.0 
ios-sim version: 5.0.12 
OS: macOS Sierra
Node Version: v6.9.1
Xcode version: Xcode 8.1 Build version 8B62
@jgw96
Copy link
Contributor

jgw96 commented Dec 12, 2016

Hello, thanks for posting an issue! Unfortunately i cannot reproduce this in my test apps. Could you post a repo i can use to try to repro this issue?

@jgw96 jgw96 added needs: reply the issue needs a response from the user v2 labels Dec 12, 2016
@Manduro
Copy link
Contributor Author

Manduro commented Dec 13, 2016

@jgw96 Like I said, I can't reproduce this either, unfortunately. But I'll keep looking into this.

The error logs for this issue are only coming from iOS users, not from web or Android. So at least that's some clue. It has been logged about 500 times for some 150 test users in ~24 hours, so it occurs quite often, but inconsistently.

@jgw96
Copy link
Contributor

jgw96 commented Dec 13, 2016

hmm interesting. let me know what you find! Unfortunately i am still unable to repro this issue. Does your app use virtual scroll?

@Manduro
Copy link
Contributor Author

Manduro commented Dec 13, 2016

@jgw96 I will. No, it does not use virtual scroll.

@pyavcom
Copy link

pyavcom commented Dec 15, 2016

TypeError: null is not an object (evaluating 'this._scrollEle.style')

happens at:
this.nav.setRoot(SignupPage);

when change one page to other, and again change root back, and both pages has centered card and input fields on it, and card scrolls when keyboard appear authomaticaly.

@Manduro
Copy link
Contributor Author

Manduro commented Jan 10, 2017

Still happening here on RC4. Seems to happen after closing a modal with inputs, sometimes.

manucorporat added a commit to manucorporat/ionic that referenced this issue Jan 16, 2017
mhartington pushed a commit that referenced this issue Jan 20, 2017
* docs(navctrl): move content from api doc to top-level nav doc

* docs(action sheet): edit and clarify docs

* docs(action sheet): expose ActionSheet and edit docs

* docs(action sheet): make link path relative and refine docs

* docs(action sheet): fix typo

* docs(action sheet): clean up table formatting

* docs(alert): refactor, add examples, and edit API doc

* docs(alert): fix typos

* docs(alert, action sheet): move page transition doc under advanced

* docs(avatar): add usage example and edit doc

* docs(button): refactor docs and add content from component doc

* docs(card): refactor and incorporate samples from component doc

* docs(checkbox): minor edit

* docs(chip): Add note about MD

* docs(icon): refactor and integrate examples from component doc

* docs(app): fix typo

* docs(config): refactor and edit

* docs(datetime): edit

* docs(gesture): add gesture docs

* docs(gesture): further edit doc

* docs(button, datetime, icon): standardize use of attribute vs input property

* docs(button): change wording from attribute to directive

* docs(input): edit docs and move label examples to Label api doc

* docs(input): add ion-item to code sample

* docs(input): add inset iunput sample

* docs(label): edit doc

* docs(label): add descrition of attributes

* docs(list): refactor and edit doc

* docs(list): add basic usage example

* docs(toolbar, header, footer): refactor and edit docs

* docs(tabs): edit and incorporate examples from old component doc

* docs(navctrl): migrate majority of content to top-level navigation controller doc

* chore(img): fix typos

* docs(virtual scroll): remove instance members

* docs(virtual scroll): increase header sizes

* docs(menu): add related links to all menu docs

* docs(nav): update related docs for all nav docs

* docs(navbar): edit and hide some private instance members

* docs(content): add no-bounce to doc

* docs(fab): fix fab demo

closes ionic-team/ionic-site#947

* docs(note): edit

* fix(list): add border to last item in MD list (#9679)

* fix(list): fixes #9619

* chore(list): make my sass legit

* chore(list): remove from ios and wp css

* fix(scroll): handle low duration in scrollTo

* fix(input): only add padding right if it has clear input

fixes #9865

* docs(nav-controller): fix escape char in Lifecycle table

the pipe before `Promise` adds a new column to the table which makes it push the description to a narrow column. Tried to fix it with replacing the pipe by the HTML ASCII pipe char.

* docs(menu-toggle): fix broken link

path correction in description 
old -> nav/NavBar
new -> navbar/Navbar

* docs(demos): add demos from old component docs

* refactor(package.json, demo template, gulp): Update demo build for new multi-demo api docs

* refactor(demos): update demos for new multi-demo api docs

* docs(api): update api docs for new demo file structure

* refactor: improve tree shaking abilities

Internal refactor completed in order to improve tree shaking and dead
code removal. The public API, with an exception to ion-slides, has
stayed the same. However, internally many changes were required so
bundlers could better exclude modules which should not be bundled.
Ultimately most changes resorted to removing references to `window` or
`document`, or a module that referenced one of those.

BREAKING CHANGES

ion-slides was refactored to remove the external dependencies, and
rewritten in TypeScript/ES6 modules to again improve tree shaking
abilities.

* chore(build): run a 'clean' before running 'validate'

run a 'clean' before running 'validate'

* docs(menu): fix typos in menu-controller.ts (#9923)

Typo errors.

* docs(slides): fix docs

* fix(clickblock): add NavOptions.minClickBlockDuration

* feat(clickblock): ability to set a minimum duration for click block

* fix(clickblock): add NavOptions.minClickBlockDuration

* chore(clickblock): comment out test css

* test(app): fix failing clickblock tests (#9938)

* doc(navParams): update links to push and nav
Closes ionic-team/ionic-site#957

* test(clickblock): add new tests for minDuration

* docs(slides): deprecation notice typo's (#9932)

* fix(platform): only set isPortrait when the width/height is set

* test(tabs): fix ngc error in advanced test

* docs(input): add example for ion-textarea

* docs(hide-when): add hide-when demo back

* docs(demos): update colors for API demos

* chore(ionic): release rc.5

* docs(menu): update menu docs
Closes ionic-team/ionic-site#951

* docs(changelog): unsmarten quotes on sw-toolbox dep (#9966)

* docs(avatar): fix typo (#9965)

place to placed

* docs(nav): fix typos in comments for NavControllerBase and ViewController (#9953)

* docs(nav): fix typo

* docs(view): fix typo

* docs(slides): update slides docs (#9968)

Change the `pager` description.
Change the `paginationType` input type.

* chore: add void return value for some callback signatures (#9967)

* chore(noImplicitAny): add noImplicitAny to tsconfig

* feat(slides): expose more options (#9992)

* feat(slides): expose more options
Closes #9988
Exposes slidesPerView and spaceBetween. Also documents how to change
unexposed options

* docs(slides): update advanced usage

* chore: fix incorrect execution of node binaries (#9962)

* chore: fix incorrect execution of node binaries

* Currently gulp runs the `ngc` by manually calling the `./node_modules/.bin/ngc` file (by assuming it's a node script)
  This is not always correct, because often package managers like (npm or yarn) create bash files for the package binaries.

* Using `resolve-bin` to properly determine the path to the *real* node script and then we can assume it's a node file.

Fixes #8341

* Remove extra newline

* feat(slides): add swiper controller (#9983)

* chore(slides): fix errors with noImplicitAny

* fix(checkbox): set disabled state from FormControl

* fix(datetime): set disabled state from FormControl

* fix(range): set disabled state from FormControl

* fix(select): set disabled state from FormControl

* fix(toggle): set disabled state from FormControl

* feat(radio): add disabled to radio-group and support disabled formcontrol

fixes #9998

* feat(slides): add option for paginationBulletRender

Closes #10002

* fix(input): pass disabled down to input when it is set from form

- test modified to disable username and comments on `input/form-inputs`
and then toggle them via a button

see: http://g.recordit.co/RkN510TcHk.gif

fixes #9834

* fix(item-sliding): don't error or allow swipes with no options

Added items with the following use cases:

1. Sliding item without options
2. Sliding item with one set of dynamic options that toggle
3. Sliding item with two options, one dynamic

Removing my code will cause errors in all of the above examples.

Fixes #9914

* fix(nav): fixes #9558 (#9767)

* chore(e2e): rename app-module.ts to app.module.ts for consistency

references #10023

* fix(tap): allow document to be tap polyfilled

Closes #9726

* docs(slides): document spaceBetween and slidesPerView

* Update README.md

* Fix url is not correct after selecting tabs

Update deeplinker's updateNav after tabSwitchEnd so deeplinker gets the
right active navchild.

* fix(slides): allow auto to be passed
Closes #10000. Closes #10037

* docs(tabs): fix description of tabsHideOnSubPages
Closes #10061

* docs(popover): add import to example code
Closes #10053

* docs(nav-controller): fix param name and type

* fix(tabs): ionChange event is dispatched after the switch

* docs(popover): expose popover docs and reconcile with PopoverController

* docs(modal): expose modal docs and reconcile with ModalController

* docs(toast): expose toast docs and reconcile with ToastController

* docs(demos): add missing demos - copied from preview app

* docs(demos): include demos in docs that didn't have one

* fix(alert): input missing id attribute from input options

fixes #9457

* fix(modal): overlay-zindex is not changed in back direction

fixes #9409

* fix(content): unsubscribe from viewCtrl observables after content ins… (#10050)

* fix(content): unsubscribe from observables on destroy

* fix(content): scroll is initialized before subscribing

fixes #9593
fixes #10045

* fix(content): unset viewCtrl subscribers on destroy

* test(icon): app module was being ignored by my global gitignore

* chore(scripts): update e2e prod build to work with ionic-app-scripts (#10083)

* chore(e2e): WIP to add files needed for app-scripts

* chore(e2e): WIP one e2e test building but with errors

* chore(e2e): move e2e.prod to working with app-scripts

move shared functions into util, add support for debug flag when
running e2e.prod / demos.prod which gets passed to app-scripts

* chore(build): fix app-scripts build for all e2e and demos

* chore(e2e): update ionic-angular import path

* chore(build): update dev paths to work with prod

* chore(e2e): get watch working with e2e prod

* docs(scripts): update README for running e2e and demos

closes #8411
closes #10023

* docs(config): fix demo for config page not updating. #9413 (#9418)

* docs(config): update demo for config, add more logs for app-scripts

closes #9413

* docs(demos): fix bugs and integrate multiple demos on api docs

* chore(virtual-scroll): set IterableDiffer to any

Adding this to avoid an angular version issue.

* chore(swiper): fix reference for closure advanced

* chore(scripts): update app-scripts to run via node, remove snapshot clean

* refactor(package.json): remove unneeded script
@g8d3
Copy link

g8d3 commented Feb 5, 2017

I am getting this in latest versions as for Feb 5 2017. I tested on Android device.

Error: cannot read property style of null

The code that produces it:

this.nav.setPages([MyPage])

It does go to that page, but after a few seconds error appears.

Error happens when I go to that page:

camera -> a form with picked image -> mypage

But it does not happen when:

gallery -> a form with picked image -> mypage

ionic -v 
2.2.1

In package.json: "@ionic/app-scripts": "^1.0.0",

Full trace

This is the code in referenced in the error:

selection_108

this._scrollEle.style.paddingBottom = (newPadding > 0) ? newPadding + 'px' : '';

_scrollEle is null?

@g8d3
Copy link

g8d3 commented Feb 6, 2017

This solved my issue for now:

setTimeout(()=>{this.nav.setPages([MyPage])}, 300)

@ionitron-bot
Copy link

ionitron-bot bot commented Sep 4, 2018

Thanks for the issue! This issue is being locked to prevent comments that are not relevant to the original issue. If this is still an issue with the latest version of Ionic, please create a new issue and ensure the template is fully filled out.

@ionitron-bot ionitron-bot bot locked and limited conversation to collaborators Sep 4, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
needs: reply the issue needs a response from the user
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants