Strekmann

2017-02-20

Eslint-regler

Vi prøver å ha et minimalt sett av Eslint-regler, samtidig som vi baserer oss på Airbnbs regelsett. Det betyr motsetninger, men akkurat nå er regelsettet vårt definert slik:

{
    "parser": "babel-eslint",
    "extends": "airbnb",
    "rules": {
        "arrow-body-style": ["error", "always"],
        "brace-style": [ 2, "stroustrup", {
            "allowSingleLine": true
        }],
        "indent": [ 2, 4, {"SwitchCase": 1} ],
        "max-len": 1,
        "no-underscore-dangle": ["error", {
            "allow": [
                "_id",
                "_type",
                "_json",
                "__INITIAL_STATE__"
            ]
        }],
        "no-unused-vars": [ 1, {
            "vars": "all",
            "args": "after-used",
            "argsIgnorePattern": "req|res|next"
        }],
        "quotes": [ 2, "single"],
        "react/forbid-prop-types": 0,
        "react/jsx-filename-extension": [2, {
            "extensions": [".js", ".jsx"]
        }],
        "react/jsx-indent": [2, 4],
        "react/jsx-indent-props": [2, 4],
        "react/prefer-stateless-function": 0,
        "react/require-default-props": 0,
    },
}

Vi håper å lage en pakke for å forenkle vår definisjon av hvordan koden ser ut. Men det får bli en annen gang.

2017-01-24
sigurdga

Aggressiv telefonselger

For ca en halvtime ringte det en telefonselger. Han het Anders og ringte fra 180.no. Og så mista han headsettet.

Han fortalte hva tjenesten gikk ut på, og at firmaet mitt kunne være oppført under bransjeord. Det sa jeg at jeg ikke var interessert i.

Han prøvde å si at 1.3 millioner bruker appen deres før de søker i google. Og jeg var tydelig på at jeg ikke trengte det.

Han spurte rett ut om jeg ikke ville ha flere kunder. Det stemmer, sa jeg, vi trenger ikke flere kunder.

Vi hadde en samtale om at det var lett å bli lurt av sånne telefoner, og at om han var en good guy i forhold til de andre, så skulle jeg likevel ikke ha noe.

Jeg var tydelig på at jeg ikke skulle ha noe.

Han skulle ikke si noe til sjefen, og skulle bare la det stå. Fint, sa jeg.

Så får vi se. Nå har jeg i alle fall skrevet det ned mens jeg fortsatt husker det, i tilfelle det skulle dukke opp en regning.

Telefonterror-appen fanget ikke opp nummeret hans, men det gjør det nå.

2016-12-30
sigurdga

Når Relay ikke kan lage clientMutationId

Vi er inne i en serie av feilmeldinger fra Relay som ikke alltid er like enkle å forstå seg på. Nå skal vi se hva Relay egentlig klager på når den sier at den ikke kan lage en clientMutationId:

Cannot set property ‘clientMutationId’ of undefined

Eller:

Cannot create property ‘clientMutationId’ on string ‘[…]’

Den første betyr at du ikke returnerer noe fra mutateAndGetPayload, og den andre betyr at du returnerer en streng som ikke kan brukes av Relay til å lage clientMutationId.

Om du bare har en “lokal” database-id, som du vil bruke til å lage en globalID som Relay kan fjerne i frontend, kan du bruke toGlobalId(), som tar inn et typenavn og en lokal id og returnerer en global ID. Dette gjør du i outputFields.

2016-12-28
sigurdga

Pakke svgo mangler configfil med Yarn

Når du tar i bruk Yarn, feiler plutselig Svgo med at fila .svgo.yml mangler:

Module build failed: Error: ENOENT: no such file or directory, open ‘[…]/node_modules/svgo/lib/svgo/../../.svgo.yml’

En mulig feil er at du har kjørt yarn clean som har generert sin .yarnclean. Ved hver kjøring av Yarn, kjøres da en ryddekommando som fjerner filer som sannsynligvis ikke er nødvendige for pakkeavhengigheter.

Om du tar en kikk i .yarnclean vil du se linja .*.yml som sørger for at “skjulte” yml-filer blir fjernet. Løsningen er å legge inn et unntak som dette:

!.svgo.yml
2016-12-28
sigurdga

Når RelayQL-fragmenter ikke er kompilert

Du får for eksempel feilmeldinga:

Invariant Violation: RelayQL: Unexpected invocation at runtime. Either the Babel transform was not set up, or it failed to identify this call site. Make sure it is being used verbatim as Relay.QL.

Hvis du nettopp har sjekket ut kode, og dette er første gang du kjører, må du bygge prosjektet fra bunnen, f.eks med webpack. Det er også mulig å lagre alle filene på nytt og la nodemon plukke opp endringene og bygge prosjektet på nytt.

Arkiv