首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于nodejs自动完成的Ternjs

用于nodejs自动完成的Ternjs
EN

Stack Overflow用户
提问于 2016-08-10 20:17:08
回答 2查看 1.5K关注 0票数 19

我正在尝试使用nodejs和tern打印js文件的自动补全。Ternjs的文档是我见过的最差的。

代码语言:javascript
复制
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,它不起作用,它提供了continue和const。但那之后就不是了。而在atom插件中,它提供了需要模块自动完成功能。我是不是错过了什么。

这也是.tern-project文件

代码语言:javascript
复制
{
  "ecmaVersion": 6,
  "libs": [
    "browser",
    "jquery",
    "requirejs",
    "commonjs"
  ],
  "plugins": {
    "complete_strings": {
      "maxLength": 15
    },
    "node": {},
    "lint": {},
    "doc_comment": {
      "fullDocs": true,
      "strong": true
    }
  }
}
EN

回答 2

Stack Overflow用户

发布于 2016-10-16 06:42:21

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

如果您使用node_modules/tern/bin/tern启动服务器,您将获得一个端口,然后您就可以成功发布请求并以这种方式获取完成。

代码语言:javascript
复制
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文件。

代码语言:javascript
复制
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;
}
票数 3
EN

Stack Overflow用户

发布于 2019-11-02 21:04:24

如果您使用node_modules/tern/bin/tern启动服务器,它将显示一个端口,然后您就可以成功发布请求并获得结果。

代码语言:javascript
复制
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]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38873222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档