Cannot run helloworld app for confulence

Hi everyone, Am trying to run helloworld for confulence app via geting started here.

here is the getting started link: https://developer.atlassian.com/cloud/confluence/getting-started/

here is the sample download link:

https://bitbucket.org/atlassian/confluence-helloworld-addon/downloads/?tab=downloads

here is my credentials.json


{
   "hosts" : {
      "https://fredandnancyisgood.atlassian.net": {
         "product" : "confluence",
         "username" : "my-email-goes-here",
         "password" : "my-generated-token-goes-here"
      }
   }
}

here is my atlassian-connect


{
      "key": "confluence-helloworld-addon",
      "name": "Hello World",
      "description": "My very first add-on",
      "vendor": {
        "name": "Angry Nerds",
        "url": ""
      },
      "baseUrl": "{{localBaseUrl}}",
      "links": {
        "self": "{{localBaseUrl}}/atlassian-connect.json",
        "homepage": "{{localBaseUrl}}/atlassian-connect.json"
      },
      "authentication": {
        "type": "jwt"
      },
      "lifecycle": {
        "installed": "/installed"
      },
      "scopes": [
        "READ"
      ],
      "modules": {
        "dynamicContentMacros": [
          {
            "key": "helloworld-macro",
            "name": {
              "value": "Hello World Macro"
            },
            "url": "/macro",
            "description": {
              "value": "Says 'Hello World'."
            },
            "outputType": "block",
            "bodyType": "none"
          }
        ]
      }
    }

I have followed the tutorials
up to step 4 where am stuck

When I run npm start, at some point it says Add-on not registered; no compatible hosts detected

here is the output of npm start


C:\xampp\htdocs\confluence-addon>npm start

> helloworld-app@0.0.1 start C:\xampp\htdocs\confluence-addon
> node app.js

Watching atlassian-connect.json for changes
Add-on server running at http://PC:3000
Executing (default): CREATE TABLE IF NOT EXISTS `AddonSettings` (`id` INTEGER PR
IMARY KEY AUTOINCREMENT, `clientKey` VARCHAR(255), `key` VARCHAR(255), `val` JSO
N); {
  plain: false,
  raw: true,
  logging: [Function],
  timestamps: false,
  validate: {},
  freezeTableName: false,
  underscored: false,
  paranoid: false,
  rejectOnEmpty: false,
  whereCollection: null,
  schema: null,
  schemaDelimiter: '',
  defaultScope: {},
  scopes: {},
  indexes: [
    {
      fields: [Array],
      type: '',
      parser: null,
      name: 'addon_settings_client_key_key'
    }
  ],
  name: { plural: 'AddonSettings', singular: 'AddonSetting' },
  omitNull: false,
  sequelize: Sequelize {
    options: {
      dialect: 'sqlite',
      dialectModule: null,
      dialectModulePath: null,
      protocol: 'tcp',
      define: {},
      query: {},
      sync: {},
      timezone: '+00:00',
      clientMinMessages: 'warning',
      standardConformingStrings: true,
      logging: [Function],
      omitNull: false,
      native: false,
      replication: false,
      ssl: undefined,
      pool: {},
      quoteIdentifiers: true,
      hooks: {},
      retry: [Object],
      transactionType: 'DEFERRED',
      isolationLevel: null,
      databaseVersion: 0,
      typeValidation: false,
      benchmark: false,
      minifyAliases: false,
      logQueryParameters: false,
      adapter: 'sequelize',
      storage: ':memory:'
    },
    config: {
      database: undefined,
      username: undefined,
      password: null,
      host: 'localhost',
      port: undefined,
      pool: {},
      protocol: 'tcp',
      native: false,
      ssl: undefined,
      replication: false,
      dialectModule: null,
      dialectModulePath: null,
      keepDefaultTimezone: undefined,
      dialectOptions: undefined
    },
    dialect: SqliteDialect {
      sequelize: [Circular],
      connectionManager: [ConnectionManager],
      QueryGenerator: [SQLiteQueryGenerator]
    },
    queryInterface: QueryInterface {
      sequelize: [Circular],
      QueryGenerator: [SQLiteQueryGenerator]
    },
    models: { AddonSetting: AddonSetting },
    modelManager: ModelManager { models: [Array], sequelize: [Circular] },
    connectionManager: ConnectionManager {
      sequelize: [Circular],
      config: [Object],
      dialect: [SqliteDialect],
      versionPromise: null,
      dialectName: 'sqlite',
      pool: [Pool],
      connections: [Object],
      lib: [Object]
    },
    importCache: {}
  },
  hooks: true,
  uniqueKeys: {},
  type: 'RAW',
  uuid: 'default',
  inMemory: 1,
  readWriteMode: undefined
}
Executing (default): PRAGMA INDEX_LIST(`AddonSettings`) {
  plain: false,
  raw: true,
  logging: [Function],
  timestamps: false,
  validate: {},
  freezeTableName: false,
  underscored: false,
  paranoid: false,
  rejectOnEmpty: false,
  whereCollection: null,
  schema: null,
  schemaDelimiter: '',
  defaultScope: {},
  scopes: {},
  indexes: [
    {
      fields: [Array],
      type: '',
      parser: null,
      name: 'addon_settings_client_key_key'
    }
  ],
  name: { plural: 'AddonSettings', singular: 'AddonSetting' },
  omitNull: false,
  sequelize: Sequelize {
    options: {
      dialect: 'sqlite',
      dialectModule: null,
      dialectModulePath: null,
      protocol: 'tcp',
      define: {},
      query: {},
      sync: {},
      timezone: '+00:00',
      clientMinMessages: 'warning',
      standardConformingStrings: true,
      logging: [Function],
      omitNull: false,
      native: false,
      replication: false,
      ssl: undefined,
      pool: {},
      quoteIdentifiers: true,
      hooks: {},
      retry: [Object],
      transactionType: 'DEFERRED',
      isolationLevel: null,
      databaseVersion: 0,
      typeValidation: false,
      benchmark: false,
      minifyAliases: false,
      logQueryParameters: false,
      adapter: 'sequelize',
      storage: ':memory:'
    },
    config: {
      database: undefined,
      username: undefined,
      password: null,
      host: 'localhost',
      port: undefined,
      pool: {},
      protocol: 'tcp',
      native: false,
      ssl: undefined,
      replication: false,
      dialectModule: null,
      dialectModulePath: null,
      keepDefaultTimezone: undefined,
      dialectOptions: undefined
    },
    dialect: SqliteDialect {
      sequelize: [Circular],
      connectionManager: [ConnectionManager],
      QueryGenerator: [SQLiteQueryGenerator]
    },
    queryInterface: QueryInterface {
      sequelize: [Circular],
      QueryGenerator: [SQLiteQueryGenerator]
    },
    models: { AddonSetting: AddonSetting },
    modelManager: ModelManager { models: [Array], sequelize: [Circular] },
    connectionManager: ConnectionManager {
      sequelize: [Circular],
      config: [Object],
      dialect: [SqliteDialect],
      versionPromise: null,
      dialectName: 'sqlite',
      pool: [Pool],
      connections: [Object],
      lib: [Object]
    },
    importCache: {}
  },
  hooks: true,
  type: 'SHOWINDEXES',
  uuid: 'default',
  inMemory: 1,
  readWriteMode: undefined
}
Executing (default): CREATE INDEX `addon_settings_client_key_key` ON `AddonSetti
ngs` (`clientKey`, `key`) {
  plain: false,
  raw: true,
  logging: [Function],
  benchmark: undefined,
  transaction: undefined,
  schema: null,
  fields: [ 'clientKey', 'key' ],
  parser: null,
  name: 'addon_settings_client_key_key',
  prefix: 'AddonSettings',
  supportsSearchPath: false,
  type: 'RAW',
  uuid: 'default',
  inMemory: 1,
  readWriteMode: undefined
}
Local tunnel established at https://4a835983.ngrok.io/
Check http://127.0.0.1:4040 for tunnel status
Registering add-on...
Failed to register with host https://fredandnancyisgood.atlassian.net/wiki (200)

{"type":"INSTALL","pingAfter":300,"status":{"done":true,"statusCode":200,"conten
tType":"application/vnd.atl.plugins.task.install.err+json","subCode":"upm.plugin
Install.error.descriptor.not.from.marketplace","source":"https://4a835983.ngrok.
io/atlassian-connect.json","name":"https://4a835983.ngrok.io/atlassian-connect.j
son"},"links":{"self":"/wiki/rest/plugins/1.0/pending/5563f21d-0a45-468e-935c-b3
b1772119bd","alternate":"/wiki/rest/plugins/1.0/tasks/5563f21d-0a45-468e-935c-b3
b1772119bd"},"timestamp":1590331306759,"accountId":"5ec6100799d9ab0c4018eee6","i
d":"5563f21d-0a45-468e-935c-b3b1772119bd"}
Add-on not registered; no compatible hosts detected

Hi @EsedoFredrick

Did you enable development on your Atlassian site as described in Step 2 of the getting started guide? Step 2: Enable development mode in your site on https://developer.atlassian.com/cloud/confluence/getting-started/#step-2-enable-development-mode-in-your-site

1 Like

I recall password is no longer supported. You will have to generate api token from https://id.atlassian.com/manage-profile/security/api-tokens and edit your config.json hosts to look like this.
“hosts” :[“https://username:apiToken@fredandnancyisgood.atlassian.net/wiki”]

Thanks
Lava

@HeyJoe, thanks for responding, Please how do I navigate to system settings to be able enable development mode for confulence. what are the direct links to that because I did not see anywhere to enable development mode in my project dashboard

here is my project https://fredandnancyisgood.atlassian.net/secure/BrowseProjects.jspa
thanks

@lavakumar.dukanam , thanks for responding, It seems that I have to enable Development mode for confulence first.

Please how do I navigate to system settings to be able enable development mode for confulence . what are the direct links to that because I did not see anywhere to enable development mode in my project dashboard

thanks

@EsedoFredrick

Navigate to Atlassian Marketplace section and choose Manage apps.

click on the Settings link from Manage apps, it opens up a dialog box, then you can do it from there.

1 Like