2016-08-10 8 views
15

nodejsとternを使ってjsファイルのオートコンプリートを印刷しようとしています。 Ternjsには私が今まで見た中で最悪の文書があります。Ternjs for nodejsオートコンプリート

var tern = require("tern") 

var ternServer = new tern.Server({}) 

var requestDetails = { 
     "query": { 
      "type": "completions", 
      "file": "myfile.js", 
      "end": {"line":0,"ch":3}, 
      "types":true, 
      "includeKeywords":true, 
      "sort":true, 
      "guess":true, 
      "docs":true, 
      "urls":true, 
      "origins":true, 
      "lineCharPositions":true, 
      "caseInsensitive":true 
     }, 
     "files": [ 
      { 
       "type": "full", 
       "name": "myfile.js", 
       "text": 'req' 
      } 
     ] 
} 

ternServer.request(requestDetails, function(error, success){ 
    console.log(success); 
}); 

私がconを使用すると動作しません。しかしそれ以降はありません。原子プラグインでは、モジュールのオートコンプリートが必要です。私は何かが欠けていますか?

はまた、これはあなたがこの方法でサーバを起動したときに、オートコンプリートライブラリがロードされていない.tern-プロジェクトファイル

{ 
    "ecmaVersion": 6, 
    "libs": [ 
    "browser", 
    "jquery", 
    "requirejs", 
    "commonjs" 
    ], 
    "plugins": { 
    "complete_strings": { 
     "maxLength": 15 
    }, 
    "node": {}, 
    "lint": {}, 
    "doc_comment": { 
     "fullDocs": true, 
     "strong": true 
    } 
    } 
} 
+0

エラー処理を追加する価値があります。 console.log(エラー);それはあなたに何が失敗したかの手がかりを与えることができます。 – omer727

答えて

3

です。単に.tern_projectファイルでそれらを定義するだけではうまくいかないようです。

node_modules/tern/bin/ternを使用してサーバーを起動すると、ポートが取得され、要求を正常にPOSTして完了を得ることができます。

curl -H "Content-Type:e": "completions","file": "myfile.js","end": {"line":0,"ch":3},"types":true,"includeKeywords":true,"sort":true,"guess":true,"docs":true,"urls":true,"origins":true,"lineCharPositions":true,"caseInsensitive":true},"files": [{"type": "full","name": "myfile.js","text": "req"}]}' http://localhost:[PORT] 

これが機能しない場合は、手動でdefファイルを追加できます。

var tern = require("tern"); 
var fs = require("fs"); 

var ternServer = new tern.Server({ "async": true, "defs": findDefs()}) 
var requestDetails = { 
    "query": { 
     "type": "completions", 
     "file": "myfile.js", 
     "end": { "line": 0, "ch": 3 }, 
     "types": true, 
     "includeKeywords": true, 
     "sort": true, 
     "guess": true, 
     "docs": true, 
     "urls": true, 
     "origins": true, 
     "lineCharPositions": true, 
     "caseInsensitive": true, 
    }, 
    "files": [{ 
     "type": "full", 
     "name": "myfile.js", 
     "text": 'req' 
    }] 
} 

ternServer.request(requestDetails, function(error, success) { 
    console.log(success); 
}); 

function findDefs() { 
    var defs = []; 
    defs.push(JSON.parse(fs.readFileSync("node_modules/tern/defs/ecmascript.json", "utf8"))); 
    defs.push(JSON.parse(fs.readFileSync("node_modules/tern/defs/browser.json", "utf8"))); 
    defs.push(JSON.parse(fs.readFileSync("node_modules/tern/defs/jquery.json", "utf8"))); 
    defs.push(JSON.parse(fs.readFileSync("node_modules/tern/defs/underscore.json", "utf8"))); 
    return defs; 
} 
関連する問題