2016-05-16 7 views
0

Ich arbeite mit suitescript 2.0 (Netsuite) und ich frage mich, wie würde ich gehen über eine benutzerdefinierte Klasse (Objekt) mit seiner neuen API. Ich versuche beispielsweise, eine Controller-Klasse einzubinden, aber die Warnung "Modul nicht gefunden" zu erhalten. Snippet siehe untenSuiteScript2.0 - Einschließlich einer benutzerdefinierten Datei

/** 
    *@NApiVersion 2.x 
    *@NScriptType Restlet 
    */ 
    define(['N/record', 'N/error', "src/My_Controller"], 
     function (record, error, My_Controller) { 
      var controller = new My_Controller(); 
      ... 

Die Fehlermeldung lautet: Module does not exist: src/My_Controller.js wenn in der Tat es da ist. Ist das der richtige Weg?

Die NetSuite-Hilfe hat nichts über die Aufnahme von custom/Zusatz javascript

Antwort

2

Sie kundenspezifische Module im File Cabinet von ihrem Pfad verweisen. Dies kann entweder relativ zur aktuellen Datei oder relativ zum Root des File Cabinets sein. So wird es in etwa so aussehen:

define(['N/record', 'N/error', '/SuiteScripts/my-project/src/My_Controller'], ...) 

oder:

define(['N/record', 'N/error', './src/My_Controller'], ...) 

Unter der Annahme, dass src im selben Verzeichnis wie diese Datei ist.

+0

Das brachte mich einen Schritt weiter, aber immer noch diesen Fehler: TypeError: My_Controller ist keine Funktion. Ich überprüfe meine Exporte, aber danke viel – Coldstar

+1

Sie müssen Ihre benutzerdefinierte Datei als ein AMD-Modul definieren, indem Sie die Define-Funktion verwenden. Ihr Modul muss eine 'Konstrukt'-Funktion oder einen anderen Namen exportieren, den Sie aufrufen möchten, und dann werden Sie es in Ihrem Restlet als' My_Controller.construct() 'referenzieren – erictgrubaugh