Async Device.js --> App.js

Dit werkt niet voor mij,

Device.js

await app.blink();

App.js

async blink() {
     this.log('Blinking ... ');
}

Wat moet ik hieraan veranderen om het toch te laten wereken?

Voor mij wel.

// app.js
class MyApp extends Homey.App {
  async blink() {
    this.log('Blinking...');
  }
}

// device.js
class TestDevice extends Homey.Device {
  async onInit() {
    const app = this.homey.app;
    await app.blink();
  }
}

// console
[log] 2021-10-23 06:37:37 [MyApp] Blinking...

In de twee bestanden zet hij dat er fouten in zitten:

image

En heb de zelfde code als dat jij hebt voorgesteld.

app.js

image

device.js

image

Wat moet ik hier mee verder?

Ik ben benieuwd wat die fouten precies zijn, maar ik heb zo het vermoeden dat je editor this.homey of this.homey.app niet accepteert. Ik ben zelf niet zo van de editors die het beter menen te weten dan de ontwikkelaar…

device.js

image

app.js

image

I’m not going to fix your editor :thinking:

Bij het uitvoeren van de app is er ook een error:

app.ts(129,13): error TS1434: Unexpected keyword or identifier.
app.ts(129,27): error TS1005: ‘;’ expected.

Met andere woorden is er toch iets mis.

Ja duidelijk, maar niet met mijn code (wat overigens JS code was, geen TS code).

Hoe moet ik het dan oplossen?

  • ik wil een functie kunnen starten vanuit device.ts naar app.ts
  • en later terug sturen van app.ts naar een device in een driver

Hoe komt het dat alle code die te vinden is van homey in JS is en niet in TS?
Want toen ik een nieuwe app aanmaakte kreeg ik TS in plaats van JS.

Daar heb je zelf voor gekozen:
image

Hoe je het moet oplossen is precies zoals ik heb aangegeven. Als dat niet mag van TS of je editor dan zou ik overwegen om TS en/of je editor overboord te gooien en er een JS-app van te maken.

is het niet mogelijk om van TS naar JS te wisselen zonder een nieuwe app te maken?

Je kunt de TS code omschrijven naar JS code. TS is grotendeels JS dus dat zou niet zo ingewikkeld hoeven te zijn.

Ben bezig met een nieuwe app te maken en zou dan de code kopiëren en plakken en aanpassen.

Maar heb de vraag “Use ESLint. (Y/n)” wat wilt dit zeggen en wat doet dit?

Heb je al op “eslint” gegoogled?

ja maar kom er niet wijzer uit.

homey use eslint - search results (bing.com)

Dan druk je “n” in.

ik wil weten wat het doet of verandert
ik ga niet als de vorige keer zonder denken op Y/N klikken

Jens De Smet
ik ben een homey app schrijver :grinning: .

:thinking:

Dit soort reacties ben ik niet van jullie gewend, jammer.
@TedTolboom @robertklep normaal meestal goede helpers

Sorry, maar ik ga geen hele programmeer- of Googlecursus hier posten. Ik snap ook niet waarom iemand zoekt op “homey use eslint” terwijl ik zeg dat ie op “eslint” moet zoeken (met het idee dat hij er op die manier achter komt wat eslint is, en als programmeur zou ie daaruit moeten kunnen extraheren wat de link is met Homey en de vraag die gesteld wordt). Of dat er gekozen wordt voor TypeScript (wat níet de default is) zonder te weten wat daarvan mogelijke gevolgen zijn of hoe eventuele problemen, zoals die nu naar boven komen, opgelost kunnen worden.

1 Like