RoadieHQ / roadie-backstage-plugins

All Backstage plugins created by Roadie.
https://roadie.io
Apache License 2.0
270 stars 395 forks source link

Warning: Accessing non-existent property 'HostDiscovery' of module exports inside circular dependency #1396

Closed MonicaG closed 1 month ago

MonicaG commented 4 months ago

When backstage starts up I receive the above warning messages to the log. The stack trace reports the issue is from the @roadiehq/scaffolder-backend-module-http-request plugin.

Expected Behavior

It should start up without the warning message.

Current Behavior

This warning messages occurs in both our production deployment and when running locally.

On startup of backstage, the warning in the title is displayed. I enabled export NODE_OPTIONS=--trace-warnings on my local machine in order to get the following stack trace:

[1] (node:22115) Warning: Accessing non-existent property 'HostDiscovery' of module exports inside circular dependency
[1]     at emitCircularRequireWarning (node:internal/modules/cjs/loader:815:11)
[1]     at Object.get (node:internal/modules/cjs/loader:831:5)
[1]     at Object.<anonymous> (/Users/monica/development/developer-portal/node_modules/@roadiehq/scaffolder-backend-module-http-request/node_modules/@backstage/backend-app-api/node_modules/@backstage/backend-common/dist/index.cjs.js:2072:37)
[1]     at Module._compile (node:internal/modules/cjs/loader:1241:14)
[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
[1]     at Module.load (node:internal/modules/cjs/loader:1091:32)
[1]     at Module._load (node:internal/modules/cjs/loader:938:12)
[1]     at Module.require (node:internal/modules/cjs/loader:1115:19)
[1]     at require (node:internal/modules/helpers:130:18)
[1]     at Object.<anonymous> (/Users/monica/development/developer-portal/node_modules/@roadiehq/scaffolder-backend-module-http-request/node_modules/@backstage/backend-app-api/dist/index.cjs.js:31:21)
[1]     at Module._compile (node:internal/modules/cjs/loader:1241:14)
[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
[1]     at Module.load (node:internal/modules/cjs/loader:1091:32)
[1]     at Module._load (node:internal/modules/cjs/loader:938:12)
[1]     at Module.require (node:internal/modules/cjs/loader:1115:19)
[1]     at require (node:internal/modules/helpers:130:18)
[1] (node:22115) Warning: Accessing non-existent property 'HostDiscovery' of module exports inside circular dependency
[1]     at emitCircularRequireWarning (node:internal/modules/cjs/loader:815:11)
[1]     at Object.get (node:internal/modules/cjs/loader:831:5)
[1]     at Object.<anonymous> (/Users/monica/development/developer-portal/node_modules/@roadiehq/scaffolder-backend-module-http-request/node_modules/@backstage/backend-app-api/node_modules/@backstage/backend-common/dist/index.cjs.js:2073:43)
[1]     at Module._compile (node:internal/modules/cjs/loader:1241:14)
[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
[1]     at Module.load (node:internal/modules/cjs/loader:1091:32)
[1]     at Module._load (node:internal/modules/cjs/loader:938:12)
[1]     at Module.require (node:internal/modules/cjs/loader:1115:19)
[1]     at require (node:internal/modules/helpers:130:18)
[1]     at Object.<anonymous> (/Users/monica/development/developer-portal/node_modules/@roadiehq/scaffolder-backend-module-http-request/node_modules/@backstage/backend-app-api/dist/index.cjs.js:31:21)
[1]     at Module._compile (node:internal/modules/cjs/loader:1241:14)
[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
[1]     at Module.load (node:internal/modules/cjs/loader:1091:32)
[1]     at Module._load (node:internal/modules/cjs/loader:938:12)
[1]     at Module.require (node:internal/modules/cjs/loader:1115:19)
[1]     at require (node:internal/modules/helpers:130:18)
[1] (node:22115) Warning: Accessing non-existent property 'HostDiscovery' of module exports inside circular dependency
[1]     at emitCircularRequireWarning (node:internal/modules/cjs/loader:815:11)
[1]     at Object.get (node:internal/modules/cjs/loader:831:5)
[1]     at Object.<anonymous> (/Users/monica/development/developer-portal/node_modules/@roadiehq/scaffolder-backend-module-http-request/node_modules/@backstage/plugin-permission-node/node_modules/@backstage/backend-common/dist/index.cjs.js:2072:37)
[1]     at Module._compile (node:internal/modules/cjs/loader:1241:14)
[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
[1]     at Module.load (node:internal/modules/cjs/loader:1091:32)
[1]     at Module._load (node:internal/modules/cjs/loader:938:12)
[1]     at Module.require (node:internal/modules/cjs/loader:1115:19)
[1]     at require (node:internal/modules/helpers:130:18)
[1]     at Object.<anonymous> (/Users/monica/development/developer-portal/node_modules/@roadiehq/scaffolder-backend-module-http-request/node_modules/@backstage/plugin-permission-node/dist/index.cjs.js:9:21)
[1]     at Module._compile (node:internal/modules/cjs/loader:1241:14)
[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
[1]     at Module.load (node:internal/modules/cjs/loader:1091:32)
[1]     at Module._load (node:internal/modules/cjs/loader:938:12)
[1]     at Module.require (node:internal/modules/cjs/loader:1115:19)
[1]     at require (node:internal/modules/helpers:130:18)
[1] (node:22115) Warning: Accessing non-existent property 'HostDiscovery' of module exports inside circular dependency
[1]     at emitCircularRequireWarning (node:internal/modules/cjs/loader:815:11)
[1]     at Object.get (node:internal/modules/cjs/loader:831:5)
[1]     at Object.<anonymous> (/Users/monica/development/developer-portal/node_modules/@roadiehq/scaffolder-backend-module-http-request/node_modules/@backstage/plugin-permission-node/node_modules/@backstage/backend-common/dist/index.cjs.js:2073:43)
[1]     at Module._compile (node:internal/modules/cjs/loader:1241:14)
[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
[1]     at Module.load (node:internal/modules/cjs/loader:1091:32)
[1]     at Module._load (node:internal/modules/cjs/loader:938:12)
[1]     at Module.require (node:internal/modules/cjs/loader:1115:19)
[1]     at require (node:internal/modules/helpers:130:18)
[1]     at Object.<anonymous> (/Users/monica/development/developer-portal/node_modules/@roadiehq/scaffolder-backend-module-http-request/node_modules/@backstage/plugin-permission-node/dist/index.cjs.js:9:21)
[1]     at Module._compile (node:internal/modules/cjs/loader:1241:14)
[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
[1]     at Module.load (node:internal/modules/cjs/loader:1091:32)
[1]     at Module._load (node:internal/modules/cjs/loader:938:12)
[1]     at Module.require (node:internal/modules/cjs/loader:1115:19)
[1]     at require (node:internal/modules/helpers:130:18)
[1] (node:22115) Warning: Accessing non-existent property 'HostDiscovery' of module exports inside circular dependency
[1]     at emitCircularRequireWarning (node:internal/modules/cjs/loader:815:11)
[1]     at Object.get (node:internal/modules/cjs/loader:831:5)
[1]     at Object.<anonymous> (/Users/monica/development/developer-portal/node_modules/@roadiehq/scaffolder-backend-module-http-request/node_modules/@backstage/backend-tasks/node_modules/@backstage/backend-common/dist/index.cjs.js:2072:37)
[1]     at Module._compile (node:internal/modules/cjs/loader:1241:14)
[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
[1]     at Module.load (node:internal/modules/cjs/loader:1091:32)
[1]     at Module._load (node:internal/modules/cjs/loader:938:12)
[1]     at Module.require (node:internal/modules/cjs/loader:1115:19)
[1]     at require (node:internal/modules/helpers:130:18)
[1]     at Object.<anonymous> (/Users/monica/development/developer-portal/node_modules/@roadiehq/scaffolder-backend-module-http-request/node_modules/@backstage/backend-tasks/dist/index.cjs.js:5:21)
[1]     at Module._compile (node:internal/modules/cjs/loader:1241:14)
[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
[1]     at Module.load (node:internal/modules/cjs/loader:1091:32)
[1]     at Module._load (node:internal/modules/cjs/loader:938:12)
[1]     at Module.require (node:internal/modules/cjs/loader:1115:19)
[1]     at require (node:internal/modules/helpers:130:18)
[1] (node:22115) Warning: Accessing non-existent property 'HostDiscovery' of module exports inside circular dependency
[1]     at emitCircularRequireWarning (node:internal/modules/cjs/loader:815:11)
[1]     at Object.get (node:internal/modules/cjs/loader:831:5)
[1]     at Object.<anonymous> (/Users/monica/development/developer-portal/node_modules/@roadiehq/scaffolder-backend-module-http-request/node_modules/@backstage/backend-tasks/node_modules/@backstage/backend-common/dist/index.cjs.js:2073:43)
[1]     at Module._compile (node:internal/modules/cjs/loader:1241:14)
[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
[1]     at Module.load (node:internal/modules/cjs/loader:1091:32)
[1]     at Module._load (node:internal/modules/cjs/loader:938:12)
[1]     at Module.require (node:internal/modules/cjs/loader:1115:19)
[1]     at require (node:internal/modules/helpers:130:18)
[1]     at Object.<anonymous> (/Users/monica/development/developer-portal/node_modules/@roadiehq/scaffolder-backend-module-http-request/node_modules/@backstage/backend-tasks/dist/index.cjs.js:5:21)
[1]     at Module._compile (node:internal/modules/cjs/loader:1241:14)
[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
[1]     at Module.load (node:internal/modules/cjs/loader:1091:32)
[1]     at Module._load (node:internal/modules/cjs/loader:938:12)
[1]     at Module.require (node:internal/modules/cjs/loader:1115:19)
[1]     at require (node:internal/modules/helpers:130:18)

Steps to Reproduce

This warning happens with versions 4.2.0 and 4.3.2 of the plugin. It does not happen with version 4.1.1. I did not try version 4.3.0 or 4.3.1.

I am using the legacy backend. Backstage version 1.26.5

Start backstage, the warning is outputted to the logs after reporting webpack compiled successfully:

[1] Build succeeded
[0] Loaded config from app-config.yaml, app-config.local.yaml
[0] <i> [webpack-dev-server] Project is running at:
[0] <i> [webpack-dev-server] Loopback: http://localhost:3000/, http://[::1]:3000/
[0] <i> [webpack-dev-server] Content not from webpack is served from '/Users/monica/development/developer-portal/packages/app/public' directory
[0] <i> [webpack-dev-server] 404s will fallback to '/index.html'
[0] <i> [webpack-dev-middleware] wait until bundle finished: /
[0] webpack compiled successfully
[1] (node:7929) Warning: Accessing non-existent property 'HostDiscovery' of module exports inside circular dependency

Possible Solution

Not sure.

Context

Contents of packages/backend/package.json file:

{
  "name": "backend",
  "version": "0.0.0",
  "main": "dist/index.cjs.js",
  "types": "src/index.ts",
  "private": true,
  "backstage": {
    "role": "backend"
  },
  "scripts": {
    "start": "backstage-cli package start",
    "build": "backstage-cli package build",
    "lint": "backstage-cli package lint",
    "test": "backstage-cli package test",
    "clean": "backstage-cli package clean",
    "build-image": "docker build ../.. -f Dockerfile --tag backstage"
  },
  "dependencies": {
    "@backstage/backend-common": "^0.21.7",
    "@backstage/backend-defaults": "^0.2.17",
    "@backstage/backend-tasks": "^0.5.22",
    "@backstage/catalog-client": "^1.6.4", 
    "@backstage/catalog-model": "^1.4.5",
    "@backstage/config": "^1.2.0",
    "@backstage/plugin-app-backend": "^0.3.65",
    "@backstage/plugin-auth-backend": "^0.22.4",
    "@backstage/plugin-auth-backend-module-github-provider": "^0.1.14",
    "@backstage/plugin-auth-backend-module-guest-provider": "^0.1.3",
    "@backstage/plugin-auth-node": "^0.4.12",
    "@backstage/plugin-catalog-backend": "^1.21.1",
    "@backstage/plugin-catalog-backend-module-github": "^0.6.0",
    "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.1.15",
    "@backstage/plugin-permission-backend": "^0.5.41",
    "@backstage/plugin-permission-backend-module-allow-all-policy": "^0.1.14",
    "@backstage/plugin-permission-common": "^0.7.13",
    "@backstage/plugin-permission-node": "^0.7.28",
    "@backstage/plugin-proxy-backend": "^0.4.15",
    "@backstage/plugin-scaffolder-backend": "^1.22.4",
    "@backstage/plugin-search-backend": "^1.5.7",
    "@backstage/plugin-search-backend-module-catalog": "^0.1.23",
    "@backstage/plugin-search-backend-module-pg": "^0.5.26",
    "@backstage/plugin-search-backend-module-techdocs": "^0.1.22",
    "@backstage/plugin-search-backend-node": "^1.2.21",
    "@backstage/plugin-stack-overflow-backend": "^0.2.22",
    "@backstage/plugin-techdocs-backend": "^1.10.4",
    "@roadiehq/scaffolder-backend-module-http-request": "^4.3.2",
    "app": "link:../app",
    "dockerode": "^3.3.1",
    "express": "^4.17.1",
    "express-promise-router": "^4.1.0",
    "isolated-vm": "4.6.0",
    "node-gyp": "^9.0.0",
    "pg": "^8.11.3",
    "winston": "^3.2.1"
  },
  "devDependencies": {
    "@backstage/cli": "^0.26.4",
    "@types/dockerode": "^3.3.0",
    "@types/express": "^4.17.6",
    "@types/express-serve-static-core": "^4.17.5",
    "@types/luxon": "^2.0.4",
    "better-sqlite3": "^9.0.0"
  },
  "files": [
    "dist"
  ]
}

Contents of package.json

{
  "name": "root",
  "version": "1.0.0",
  "private": true,
  "engines": {
    "node": "18 || 20"
  },
  "scripts": {
    "dev": "concurrently \"yarn start\" \"yarn start-backend\"",
    "start": "yarn workspace app start",
    "start-backend": "yarn workspace backend start",
    "build:backend": "yarn workspace backend build",
    "build:all": "backstage-cli repo build --all",
    "build-image": "yarn workspace backend build-image",
    "tsc": "tsc",
    "tsc:full": "tsc --skipLibCheck false --incremental false",
    "clean": "backstage-cli repo clean",
    "test": "backstage-cli repo test",
    "test:all": "backstage-cli repo test --coverage",
    "test:e2e": "playwright test",
    "fix": "backstage-cli repo fix",
    "lint": "backstage-cli repo lint --since origin/main",
    "lint:all": "backstage-cli repo lint",
    "prettier:check": "prettier --check .",
    "new": "backstage-cli new --scope internal"
  },
  "workspaces": {
    "packages": [
      "packages/*",
      "plugins/*"
    ]
  },
  "devDependencies": {
    "@backstage/cli": "^0.26.4",
    "@backstage/e2e-test-utils": "^0.1.1",
    "@playwright/test": "^1.32.3",
    "@spotify/prettier-config": "^12.0.0",
    "concurrently": "^8.0.0",
    "lerna": "^7.3.0",
    "node-gyp": "^9.0.0",
    "prettier": "^2.3.2",
    "typescript": "~5.2.0"
  },
  "resolutions": {
    "@types/react": "^18",
    "@types/react-dom": "^18"
  },
  "prettier": "@spotify/prettier-config",
  "lint-staged": {
    "*.{js,jsx,ts,tsx,mjs,cjs}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,md}": [
      "prettier --write"
    ]
  },
  "packageManager": "yarn@1.22.19"
}

How the @roadiehq/scaffolder-backend-module-http-request is used in the packages/backend/src/plugins/scaffolder.ts file:

import { CatalogClient } from '@backstage/catalog-client';
import { createBuiltinActions, createRouter } from '@backstage/plugin-scaffolder-backend';
import { Router } from 'express';
import type { PluginEnvironment } from '../types';
import { createHttpBackstageAction } from '@roadiehq/scaffolder-backend-module-http-request'
import { ScmIntegrations } from '@backstage/integration';

export default async function createPlugin(
  env: PluginEnvironment,
): Promise<Router> {
  const catalogClient = new CatalogClient({
    discoveryApi: env.discovery,
  });
  const integrations = ScmIntegrations.fromConfig(env.config);

 const builtInActions = createBuiltinActions({
    integrations,
    catalogClient,
    config: env.config,
    reader: env.reader,
  });

  const actions = [...builtInActions, createHttpBackstageAction( { discovery: env.discovery })];

  return await createRouter({
    actions,
    logger: env.logger,
    config: env.config,
    database: env.database,
    reader: env.reader,
    catalogClient: catalogClient,
    identity: env.identity,
  });  
}

Your Environment

MonicaG commented 4 months ago

I believe the warning started with version 4.1.7

jasondiazg commented 3 months ago

I am having the same issue. Any update?

github-actions[bot] commented 1 month ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.