Skip to content

Circular reference warnings in the main library export #1886

@alexp1917

Description

@alexp1917

Please tell us about your environment:

  • winston version?
    • winston@2
    • winston@3
  • node -v outputs: v15.8.0
  • Operating System? Ubuntu: Linux $HOSTNAME 5.8.0-41-generic #46~20.04.1-Ubuntu SMP Mon Jan 18 17:52:23 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
  • Language? Javascript

What is the problem?

starting up an interactive shell prints lots of warnings after requiring the winston library, and then simply typing out its name to see its exports

Example output
$ node --trace-warnings
Welcome to Node.js v15.8.0.
Type ".help" for more information.
> var winston = require('winston')
undefined
> win(node:46170) Warning: Accessing non-existent property 'Symbol(nodejs.util.inspect.custom)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)[Getter], Stream: [Getter] }, config: { cli: [Object], npm: [Object], syslog: [Object], addColors: [Function (anon...
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatValue (node:internal/util/inspect:746:30)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at Object.inspect (node:internal/util/inspect:336:10)
(node:46170) Warning: Accessing non-existent property 'constructor' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.getOwnPropertyDescriptor (node:internal/modules/cjs/loader:719:5)
    at getOwnPropertyDescriptor (<anonymous>)
    at getConstructorName (node:internal/util/inspect:548:24)
    at formatRaw (node:internal/util/inspect:797:23)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
(node:46170) Warning: Accessing non-existent property 'Symbol(Symbol.toStringTag)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatRaw (node:internal/util/inspect:803:18)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
(node:46170) Warning: Accessing non-existent property 'Symbol(Symbol.iterator)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatRaw (node:internal/util/inspect:827:12)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
ston  (node:46170) Warning: Accessing non-existent property 'Symbol(nodejs.util.inspect.custom)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)[Getter], Stream: [Getter] }, config: { cli: [Object], npm: [Object], syslog: [Object], addColors: [Function (anon...
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatValue (node:internal/util/inspect:746:30)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at Object.inspect (node:internal/util/inspect:336:10)
(node:46170) Warning: Accessing non-existent property 'constructor' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.getOwnPropertyDescriptor (node:internal/modules/cjs/loader:719:5)
    at getOwnPropertyDescriptor (<anonymous>)
    at getConstructorName (node:internal/util/inspect:548:24)
    at formatRaw (node:internal/util/inspect:797:23)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
(node:46170) Warning: Accessing non-existent property 'Symbol(Symbol.toStringTag)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatRaw (node:internal/util/inspect:803:18)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
(node:46170) Warning: Accessing non-existent property 'Symbol(Symbol.iterator)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatRaw (node:internal/util/inspect:827:12)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
ton    (node:46170) Warning: Accessing non-existent property 'Symbol(nodejs.util.inspect.custom)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)[Getter], Stream: [Getter] }, config: { cli: [Object], npm: [Object], syslog: [Object], addColors: [Function (anon...
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatValue (node:internal/util/inspect:746:30)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at Object.inspect (node:internal/util/inspect:336:10)
(node:46170) Warning: Accessing non-existent property 'constructor' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.getOwnPropertyDescriptor (node:internal/modules/cjs/loader:719:5)
    at getOwnPropertyDescriptor (<anonymous>)
    at getConstructorName (node:internal/util/inspect:548:24)
    at formatRaw (node:internal/util/inspect:797:23)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
(node:46170) Warning: Accessing non-existent property 'Symbol(Symbol.toStringTag)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatRaw (node:internal/util/inspect:803:18)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
(node:46170) Warning: Accessing non-existent property 'Symbol(Symbol.iterator)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatRaw (node:internal/util/inspect:827:12)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
on      (node:46170) Warning: Accessing non-existent property 'Symbol(nodejs.util.inspect.custom)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)[Getter], Stream: [Getter] }, config: { cli: [Object], npm: [Object], syslog: [Object], addColors: [Function (anon...
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatValue (node:internal/util/inspect:746:30)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at Object.inspect (node:internal/util/inspect:336:10)
(node:46170) Warning: Accessing non-existent property 'constructor' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.getOwnPropertyDescriptor (node:internal/modules/cjs/loader:719:5)
    at getOwnPropertyDescriptor (<anonymous>)
    at getConstructorName (node:internal/util/inspect:548:24)
    at formatRaw (node:internal/util/inspect:797:23)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
(node:46170) Warning: Accessing non-existent property 'Symbol(Symbol.toStringTag)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatRaw (node:internal/util/inspect:803:18)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
(node:46170) Warning: Accessing non-existent property 'Symbol(Symbol.iterator)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatRaw (node:internal/util/inspect:827:12)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
n        (node:46170) Warning: Accessing non-existent property 'Symbol(nodejs.util.inspect.custom)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)[Getter], Stream: [Getter] }, config: { cli: [Object], npm: [Object], syslog: [Object], addColors: [Function (anon...
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatValue (node:internal/util/inspect:746:30)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at Object.inspect (node:internal/util/inspect:336:10)
(node:46170) Warning: Accessing non-existent property 'constructor' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.getOwnPropertyDescriptor (node:internal/modules/cjs/loader:719:5)
    at getOwnPropertyDescriptor (<anonymous>)
    at getConstructorName (node:internal/util/inspect:548:24)
    at formatRaw (node:internal/util/inspect:797:23)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
(node:46170) Warning: Accessing non-existent property 'Symbol(Symbol.toStringTag)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatRaw (node:internal/util/inspect:803:18)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
(node:46170) Warning: Accessing non-existent property 'Symbol(Symbol.iterator)' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:698:11)
    at Object.get (node:internal/modules/cjs/loader:712:5)
    at formatRaw (node:internal/util/inspect:827:12)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
    at formatValue (node:internal/util/inspect:787:10)
    at formatProperty (node:internal/util/inspect:1675:11)
    at formatRaw (node:internal/util/inspect:1000:9)
.v  at formersion
'3.3.3'

What do you expect to happen instead?

I expect the output to not contain warnings, like so:

$ node
Welcome to Node.js v15.8.0.
Type ".help" for more information.
> var lodash = require('lodash')
undefined
> lodash
<ref *1> [Function: lodash] {
  templateSettings: {
    escape: /<%-([\s\S]+?)%>/g,
    evaluate: /<%([\s\S]+?)%>/g,
    interpolate: /<%=([\s\S]+?)%>/g,
    variable: '',
    imports: { _: [Circular *1] }
  },
  after: [Function: after],
  ary: [Function: ary],
  assign: [Function (anonymous)],
  assignIn: [Function (anonymous)],
  assignInWith: [Function (anonymous)],
  assignWith: [Function (anonymous)],
  at: [Function (anonymous)],

instead this is the output:

$ node
Welcome to Node.js v15.8.0.
Type ".help" for more information.
> var winston = require('winston')
undefined
> win(node:46398) Warning: Accessing non-existent property 'Symbol(nodejs.util.inspect.custom)' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)tp: [Getter], Stream: [Getter] }, config: { cli: [Object], npm: [Object], syslog: [Object], addColors: [Function (anon...
(node:46398) Warning: Accessing non-existent property 'constructor' of module exports inside circular dependency
(node:46398) Warning: Accessing non-existent property 'Symbol(Symbol.toStringTag)' of module exports inside circular dependency
(node:46398) Warning: Accessing non-existent property 'Symbol(Symbol.iterator)' of module exports inside circular dependency

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions