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

html-formatter: report fails to execute in browser with circular dependency issue #1279

Closed
davidjgoss opened this issue Dec 17, 2020 · 2 comments

Comments

@davidjgoss
Copy link
Contributor

Summary

What looks like a circular dependency in the JavaScript bundle for the HTML formatter is causing it to fail to render in browsers, resulting in a blank page.

Current Behavior

Chrome:

Uncaught TypeError: Object prototype may only be an Object or null: undefined
    at setPrototypeOf (<anonymous>)
    at n (html-formatter.html?_ijt=5or4r1oa2n5t1va26tsrh6pvtr:307)
    at a (html-formatter.html?_ijt=5or4r1oa2n5t1va26tsrh6pvtr:307)
    at html-formatter.html?_ijt=5or4r1oa2n5t1va26tsrh6pvtr:307
    at Object.2411 (html-formatter.html?_ijt=5or4r1oa2n5t1va26tsrh6pvtr:307)
    at __webpack_require__ (html-formatter.html?_ijt=5or4r1oa2n5t1va26tsrh6pvtr:307)
    at Object.1459 (html-formatter.html?_ijt=5or4r1oa2n5t1va26tsrh6pvtr:307)
    at __webpack_require__ (html-formatter.html?_ijt=5or4r1oa2n5t1va26tsrh6pvtr:307)
    at Object.9299 (html-formatter.html?_ijt=5or4r1oa2n5t1va26tsrh6pvtr:307)
    at __webpack_require__ (html-formatter.html?_ijt=5or4r1oa2n5t1va26tsrh6pvtr:307)

Firefox:

Uncaught TypeError: Object.setPrototypeOf: expected an object or null, got undefined
    n file:///Users/Aslak.Hellesoy/git/cucumber/cucumber-js/html-formatter.html:307
    a file:///Users/Aslak.Hellesoy/git/cucumber/cucumber-js/html-formatter.html:307
    o file:///Users/Aslak.Hellesoy/git/cucumber/cucumber-js/html-formatter.html:307
    2411 file:///Users/Aslak.Hellesoy/git/cucumber/cucumber-js/html-formatter.html:307
    __webpack_require__ file:///Users/Aslak.Hellesoy/git/cucumber/cucumber-js/html-formatter.html:307
    1459 file:///Users/Aslak.Hellesoy/git/cucumber/cucumber-js/html-formatter.html:307
    __webpack_require__ file:///Users/Aslak.Hellesoy/git/cucumber/cucumber-js/html-formatter.html:307
    9299 file:///Users/Aslak.Hellesoy/git/cucumber/cucumber-js/html-formatter.html:307
    __webpack_require__ file:///Users/Aslak.Hellesoy/git/cucumber/cucumber-js/html-formatter.html:307
    <anonymous> file:///Users/Aslak.Hellesoy/git/cucumber/cucumber-js/html-formatter.html:307
    <anonymous> file:///Users/Aslak.Hellesoy/git/cucumber/cucumber-js/html-formatter.html:307
html-formatter.html:307:17344

Possible Solution

TBC

Steps to Reproduce (for bugs)

  1. Clone monorepo
  2. git checkout master
  3. cd html-formatter/javascript
  4. make
  5. open acceptance/minimal/minimal.html

Context & Motivation

See cucumber/cucumber-js#1510

@davidjgoss
Copy link
Contributor Author

davidjgoss commented Dec 17, 2020

Per this issue seems like a possible circular dependency issue. Not sure why it doesn't cause webpack to fail at build time though?

Added circular-dependency-plugin to the webpack config for html-formatter, and:

ERROR in Circular dependency detected:
node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages/dist/src/MessageToBinaryStream.js -> node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages/dist/src/index.js -> node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages/dist/src/MessageToBinaryStream.js

ERROR in Circular dependency detected:
node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages/dist/src/TimeConversion.js -> node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages/dist/src/index.js -> node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages/dist/src/TimeConversion.js

ERROR in Circular dependency detected:
node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages/dist/src/index.js -> node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages/dist/src/MessageToBinaryStream.js -> node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages/dist/src/index.js

ERROR in Circular dependency detected:
node_modules/@cucumber/messages/dist/src/MessageToBinaryStream.js -> node_modules/@cucumber/messages/dist/src/index.js -> node_modules/@cucumber/messages/dist/src/MessageToBinaryStream.js

ERROR in Circular dependency detected:
node_modules/@cucumber/messages/dist/src/TimeConversion.js -> node_modules/@cucumber/messages/dist/src/index.js -> node_modules/@cucumber/messages/dist/src/TimeConversion.js

ERROR in Circular dependency detected:
node_modules/@cucumber/messages/dist/src/index.js -> node_modules/@cucumber/messages/dist/src/MessageToBinaryStream.js -> node_modules/@cucumber/messages/dist/src/index.js

ERROR in Circular dependency detected:
node_modules/@cucumber/query/node_modules/@cucumber/messages/dist/src/MessageToBinaryStream.js -> node_modules/@cucumber/query/node_modules/@cucumber/messages/dist/src/index.js -> node_modules/@cucumber/query/node_modules/@cucumber/messages/dist/src/MessageToBinaryStream.js

ERROR in Circular dependency detected:
node_modules/@cucumber/query/node_modules/@cucumber/messages/dist/src/TimeConversion.js -> node_modules/@cucumber/query/node_modules/@cucumber/messages/dist/src/index.js -> node_modules/@cucumber/query/node_modules/@cucumber/messages/dist/src/TimeConversion.js

ERROR in Circular dependency detected:
node_modules/@cucumber/query/node_modules/@cucumber/messages/dist/src/index.js -> node_modules/@cucumber/query/node_modules/@cucumber/messages/dist/src/MessageToBinaryStream.js -> node_modules/@cucumber/query/node_modules/@cucumber/messages/dist/src/index.js

ERROR in Circular dependency detected:
node_modules/@cucumber/react/dist/src/components/app/FilteredResults.js -> node_modules/@cucumber/react/dist/src/index.js -> node_modules/@cucumber/react/dist/src/components/app/FilteredResults.js

ERROR in Circular dependency detected:
node_modules/@cucumber/react/dist/src/index.js -> node_modules/@cucumber/react/dist/src/components/app/FilteredResults.js -> node_modules/@cucumber/react/dist/src/index.js

ERROR in Circular dependency detected:
node_modules/@cucumber/react/node_modules/@cucumber/messages/dist/src/MessageToBinaryStream.js -> node_modules/@cucumber/react/node_modules/@cucumber/messages/dist/src/index.js -> node_modules/@cucumber/react/node_modules/@cucumber/messages/dist/src/MessageToBinaryStream.js

ERROR in Circular dependency detected:
node_modules/@cucumber/react/node_modules/@cucumber/messages/dist/src/TimeConversion.js -> node_modules/@cucumber/react/node_modules/@cucumber/messages/dist/src/index.js -> node_modules/@cucumber/react/node_modules/@cucumber/messages/dist/src/TimeConversion.js

ERROR in Circular dependency detected:
node_modules/@cucumber/react/node_modules/@cucumber/messages/dist/src/index.js -> node_modules/@cucumber/react/node_modules/@cucumber/messages/dist/src/MessageToBinaryStream.js -> node_modules/@cucumber/react/node_modules/@cucumber/messages/dist/src/index.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/converter.js -> node_modules/protobufjs/src/enum.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/converter.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/decoder.js -> node_modules/protobufjs/src/enum.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/decoder.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/encoder.js -> node_modules/protobufjs/src/enum.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/encoder.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/enum.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/namespace.js -> node_modules/protobufjs/src/field.js -> node_modules/protobufjs/src/enum.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/field.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/namespace.js -> node_modules/protobufjs/src/field.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/mapfield.js -> node_modules/protobufjs/src/field.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/mapfield.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/method.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/service.js -> node_modules/protobufjs/src/method.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/namespace.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/namespace.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/namespace.js -> node_modules/protobufjs/src/object.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/oneof.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/oneof.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/root.js -> node_modules/protobufjs/src/namespace.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/root.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/service.js -> node_modules/protobufjs/src/namespace.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/service.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/namespace.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/types.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/namespace.js -> node_modules/protobufjs/src/field.js -> node_modules/protobufjs/src/types.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/namespace.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/util/longbits.js -> node_modules/protobufjs/src/util/minimal.js -> node_modules/protobufjs/src/util/longbits.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/util/minimal.js -> node_modules/protobufjs/src/util/longbits.js -> node_modules/protobufjs/src/util/minimal.js

ERROR in Circular dependency detected:
node_modules/protobufjs/src/verifier.js -> node_modules/protobufjs/src/enum.js -> node_modules/protobufjs/src/object.js -> node_modules/protobufjs/src/util.js -> node_modules/protobufjs/src/type.js -> node_modules/protobufjs/src/verifier.js

webpack 5.11.0 compiled with 32 errors in 33984 ms

I can see how those imports in messages look circular but they have been that way forever, so I think protobuf is the more likely culprit. More evidence: protobufjs/protobuf.js#1402

Update: it may be protobuf but it's also our messages code too. Starting to suspect webpack 4 -> 5 has exposed this.

@davidjgoss
Copy link
Contributor Author

Fixing our circular deps internally was enough to make webpack 5 work, so this can close now.

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

1 participant