Как войти в приложение Insights в F # Fable? - PullRequest
3 голосов
/ 15 мая 2019

Я разрабатываю SAFE приложение на F #, и часть его отправляет некоторые журналы в Application Insights в Azure.Регистрация на стороне сервера выглядит несколько просто :

open Microsoft.ApplicationInsights
open Microsoft.ApplicationInsights.Extensibility

let getTelemetryClient() =
    let key = <key>
    TelemetryConfiguration.Active.InstrumentationKey <- key
    TelemetryClient()

let log (message : string) =
    let logger = (lazy getTelemetryClient()).Value
    logger.TrackTrace message
    logger.Flush()

Теперь я хочу сделать что-то подобное на стороне клиента, в Fable.У меня есть ключ AI, и мне как-то нужно отправить данные в Azure.Тот же код не переносится в JS.

1 Ответ

4 голосов
/ 15 мая 2019

Этого можно добиться с помощью динамического программирования в Fable.

  1. Добавить зависимость AI JS в package.json:
{
    ...
    "devDependencies": {
        ...
        "applicationinsights-js": "^1.0.20"
    }
}
Отражение в webpack.config.js:
fsharpEntry: {
    "app": [
         ...
        "applicationinsights-js"
    ]
}
Настройка ведения журнала (вызовите это на этапе инициализации приложения):
open Fable.Core.JsInterop
open Fable.Import.Browser

let setup() = 
    let key = <key>
    let config = createObj [ "instrumentationKey" ==> key ]
    window?appInsights?downloadAndSetup config
Войдите так:
let log message = window?appInsights?trackTrace message

Возможно, есть более адекватные и / или безопасные для типов способы, но это работает.

...