das Problem habe ich immer. Im Cloudwatch sagt er:
Syntax error in module ‘index’: SyntaxError
at Module._compile (module.js:373:25)
at Object.Module._extensions…js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/var/task/index.js:8:16)
at Module._compile (module.js:409:26)
at Object.Module._extensions…js (module.js:416:10)
Sieht so aus, als ob das Skill nicht korrekt erzeugt wurde.
Du musst irgend einen Fehler gemacht haben.
Wirklich alle Dateien (options.js, languagefile.js und index.js) als ZIP-Datei hochgeladen?
Hm, ja habe ich. Alle 4 *.js Dateien als ein Archiv gezippt und hochgeladen. Vorher die options.js angepasst und deutsche languagefile ausgewählt. Bei den Einstellungen habe ich EU Irland, Trigger Alexa Skills Kit, Runtime Node.js 4.3, Handler index.handler, existing role: lambda_basic_execution, memory 512mb, timeout 3sec, novpc…
Ich hab die Funktion bei AWS auch bereits mehrfach angelegt…
'use strict';
var http = require('http');
var https = require('https');
var AWS = require('aws-sdk');
var AlexaSkill = require('./AlexaSkill');
var langfile=require('./languagefile');
var optionfile=require('./options');
var options=optionfile.options;
var STATE_RESPONSES=langfile.STATE_RESPONSES;
var GLOBAL_TRANSLATE=langfile.GLOBAL_TRANSLATE;
var REPLACE_TEXT=langfile.REPLACE_TEXT;
var EchoFibaro = function () {
AlexaSkill.call(this, options.appid);
};
EchoFibaro.prototype = Object.create(AlexaSkill.prototype);
EchoFibaro.prototype.constructor = EchoFibaro;
var re=new RegExp(Object.keys(REPLACE_TEXT).join("|"),"gi");
function matchRuleShort(str, rule) {
return new RegExp("^" + rule.split("*").join(".*") + "$", "i").test(str);
}
Array.prototype.getIdOfDeviceWithName = function(obj) {
return this.filter(function(item) {
for (var prop in obj)
{
// prop is the key; item[prop] is the value of the target array-list working on; obj[prop] is the filter array given as parameter
//console.log("Remove Me: prop="+prop+", obj[prop]="+obj[prop]+", item[prop]="+item[prop]);
if (!(prop in item) || obj[prop].toLowerCase() !== item[prop].toLowerCase())
return false;
}
return true;
});
};
Und nun eigentlich noch die options.js, wenn es geht geschwärzt
Laut der Fehlermeldung liegt der Fehler hier:
var optionfile=require(’./options’);
Die options.js soll eingebunden werden und das klappt nicht (entweder wird sie nicht gefunden oder sie enthält fehlerhaften Inhalt, sprich kann nicht korrekt geparst werden).
Du meintest aber ja schon, dass die options.js im ZIP Archiv enthalten ist, neben den drei anderen Dateien (languagefile.js, AlexaSkill.js und index.js).
Somit müsste diese an sich nicht in Ordnung sein.
module.exports.options = {
appid: "amzn1.ask.skill.XXXXXXXX",
host: „XXXXXXXX.dnsXXXX.XX“, // NO http:// !!! just the pure domain name
port: „80“,
headers: {
'Authorization': 'Basic ' + new Buffer(encodeURIComponent(„LOGINXXX“) + ":" + encodeURIComponent(„PASSWORTXXX“)).toString("base64"),
'Content-Type': 'text/html'
},
useHttps: false,
rejectUnauthorized: false, // Change to false if you self-signed your certificate
reAsk: false // Change to false if Alexa should only ask once
};