Terjjs为nodejs自动完成

我正在尝试使用nodejs和tern打印js文件的自动完成。 Ternjs是我见过的最糟糕的文档。

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提供继续和const。 但之后没有。 而在primefaces插件提供需要模块自动完成。 我错过了什么。

这也是.tern-project文件

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

以这种方式启动服务器时,不会加载自动完成库。 简单地在.tern_project文件中定义它们似乎不起作用。

如果你使用node_modules / tern / bin / tern启动服务器,你会得到一个端口,那么你可以成功地发布一个请求,并以这种方式获得完成。

 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; }