2016-08-25 7 views
0

自己書面WebSocket-Clientライブラリを追加しました。私がrequireをnode.jsに入れたとき、それはsettings.jsにそれを登録し、それを要求するのはglobal.get("RWSjs")で、Node-REDのfunction-nodeと同じようにうまくいきます。自己書き込み型ノード-REDノードのrequire(<Module>)の問題

私は自分でノードを作成しなければならず、このファイルを必要としたかったので、動作しません。 Node-REDは、常にjavascriptの構文エラーのために、私には「配備されていない」というエラーが表示されます。

自己書き出しノードの.jsに自己書き換えモジュールを要求するにはどうすればよいですか?

事前にどうもありがとう、ピーター:)

編集:

いくつかのコード:

EVAL-R-char.js(ノード用コード)

module.exports = function(RED) {    

    // doesn't work: 
    var RWSjs = global.get("RWSjs"); 

    function EvalRCharNode(config) {    
     RED.nodes.createNode(this,config);  

     this.instruction = config.instruction; 
     var node = this; 
     this.on('input', function(msg) {   
      //msg.payload = msg.payload.toLowerCase(); 
      msg.payload = "Instruction: " + this.instruction; 
      node.send(msg);      
     });          
    } 
    RED.nodes.registerType("eval-R-char",EvalRCharNode); 
} 
+0

。また、どのように/どこにあなた自身の「書かれたモジュール」を配備しましたか? – hardillb

+0

申し訳ありませんが、コードを投稿するのを忘れて、質問に追加しました。フローはインジェクションとデバッグの出力で構成されます。私はRWSjsファイルを "必要とせずにノードをテストし、テストがうまくいけば、意図したテスト出力' Instruction:print(hello) 'を与えました。 'global.get'行を追加すると、「配備されていないノード」エラーが発生しました。私は 'functionGlobalContext'にNode-REDの' settings.js'を編集して私のモジュールを配備しました。私は 'RWSjs:require( './ jsModules/RWSjs.js')'という行を追加しました。関数ノードではうまくいきました。 –

答えて

1

独自のノードを作成するときは、requireモジュールにコンテキストを使用しないでください。使用できない純粋な回避策です。関数ノード内の。

通常は、カスタムノードではrequireとしてください。したがって、この場合の

:あなたは、あなたは私たちが手助けをしたい場合は、いくつかのコードとノード・赤コンソール出力を共有しているつもり

module.exports = function(RED) {    

    //assuming your module is in the RWS.js file in the same directory 
    var RWSjs = require('./RWS.js'); 

    function EvalRCharNode(config) {    
     RED.nodes.createNode(this,config);  

     this.instruction = config.instruction; 
     var node = this; 
     this.on('input', function(msg) {   
      //msg.payload = msg.payload.toLowerCase(); 
      msg.payload = "Instruction: " + this.instruction; 
      node.send(msg);      
     });          
    } 
    RED.nodes.registerType("eval-R-char",EvalRCharNode); 
} 
+0

[OK]を参照してください - 私は、関数ノードのこのサンドボックスの制限は、カスタムノードでも有効だったと思った - ありがとう! –

関連する問題