Skip to content

Some Errors Are not showing on Preview #344

Open

Description

@rainmakersumit

Describe the bug

image

Some errors, like syntax or reference errors, are not being displayed properly. It would be helpful to have a console for the iframe, similar to how a terminal appears in a separate tab.

Link to a StackBlitz project which shows the error

No response

Steps to reproduce

  • Open Editor
  • Call any variable without declaring the variable
  • See Chrome Devtool

Expected behavior

  • Showing Error in the Preview Area like this -
    image

  • Also adding "Console" panel

Screenshots

No response

Platform

  • TutorialKit version: [e.g. 1.0.1]
  • OS: [e.g. macOS, Windows, Linux]
  • Browser: [e.g. Chrome, Safari, Firefox]
  • Version: [e.g. 91.1]

Additional context

No response

Activity

  1. AriPerkkio commented on Sep 22, 2024

    @AriPerkkio
    Contributor

    Preview shows everything that the application you are running from template is showing. If the template application doesn't show errors, then they won't be visible.

  2. rainmakersumit commented on Sep 22, 2024

    @rainmakersumit
    Author

    I think you guys should work on showing console log into a separate tab rather parent websites chrome devtool

  3. AriPerkkio commented on Sep 23, 2024

    @AriPerkkio
    Contributor

    At the moment we don't override or capture any console errors of the preview iframe. I wonder if we did that, how many false positive errors would we end up catching and showing to the end users. As we don't control what code users run in the webcontainer, it's also possible that we can't run our own scripts there. @Nemikolh, @sulco, any thoughts?

  4. Nemikolh commented on Sep 23, 2024

    @Nemikolh
    Member

    Hey all!

    I'm thinking that solving #213 will probably help a bit for that type of scenario. Having a console for each previews would be a nice feature though.

    However rather than have this in TutorialKit core, you can have it in your tutorial by changing a bit how your preview works:

                                    Preview  /preview            
                                   ┌────────────────────────────┐
                                   │┌──────────────────────────┐│
                                   ││Iframe  /                 ││
                                   ││                          ││
                                   ││                          ││
                                   ││                          ││
                                   ││                          ││
                                   │└──────────────────────────┘│
                                   │┌──────────────────────────┐│
                                   ││Iframe  /console          ││
                                   ││                          ││
                                   │└──────────────────────────┘│
                                   └────────────────────────────┘
    

    In your metadata you have:

    previews:
      - { port: 1234, pathname: "/preview" }

    In your application, you have three endpoints:

    • /preview which serves a simple html page with two iframes, one pointing at / and the other at /console. It also listen to 'message' sent by / and forward them to /console.
    • /console which render a "console" can be something like https://github.com/samdenty/console-feed
    • / your normal app + a script that overwrite console.log, console.error & friends to forward messages to it's window.parent

    This would work right now and is more flexible / customizable.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions