【发布时间】:2018-01-23 17:41:38
【问题描述】:
我在一个使用电子的小项目中使用 elasticsearchjs。但不知何故,我遇到了一些奇怪的东西,阻碍了我。
在 Electron 中,我有一个按钮,点击时会触发一个函数:
<button onclick="someFunction()">Click Me</button>
还有以下 Javascript:
import elasticsearch from 'elasticsearch'
function someFunction () {
console.log('hello world')
let es = new elasticsearch.Client({
host: 'http://127.0.0.1:9200',
log: 'trace'
})
es.ping().then(response => {
console.log(response) // Does not enter, promise is rejected
})
}
我可以看到hello world 输出,但不知何故,弹性搜索功能不起作用,我收到超时错误...
但是,如果我对函数的调用加倍,并向 elasticsearch API 添加异步调用,它就可以工作,并且我进入了两个 then() 调用:
import elasticsearch from 'elasticsearch'
function someFunction () {
console.log('hello world')
let es = new elasticsearch.Client({
host: 'http://127.0.0.1:9200',
log: 'trace'
})
es.ping().then(response => {
console.log(response) // promise resolves once the second one is resolved
})
setTimeout(() => {
es.ping().then(response => {
console.log(response) // resolves
})
}, 500)
}
如果我只放setTimeout()函数,它也不起作用,就像我需要调用该函数两次才能让它起作用。
我尝试了一个真正的节点脚本,代码运行良好:
let elasticsearch = require('elasticsearch')
let es = new elasticsearch.Client({
host: 'http://127.0.0.1:9200',
log: 'trace'
})
es.ping().then(response => {
console.log(response) // true
})
Electron 功能可能会导致我的代码无法正常工作,我会错过什么?
感谢大家的热心回复,祝您有美好的一天。
编辑:这是详细的错误和堆栈跟踪:
Uncaught (in promise) StatusCodeError {status: undefined, displayName: "RequestTimeout", message: "Request Timeout after 3000ms", body: false, stack: "Error: Request Timeout after 3000ms
at /home/j…_modules/elasticsearch/src/lib/transport.js:383:7"}body: falsedisplayName: "RequestTimeout"message: "Request Timeout after 3000ms"status: undefinedstack: "Error: Request Timeout after 3000ms
at /home/johndoe/Code/elastic-ui/node_modules/elasticsearch/src/lib/transport.js:354:15
at /home/johndoe/Code/elastic-ui/node_modules/elasticsearch/src/lib/transport.js:383:7"__proto__: ErrorAbstract
【问题讨论】:
-
promise 被拒绝的具体内容是什么?错误信息是什么?堆栈跟踪在哪里?
-
我用错误消息和堆栈跟踪编辑了我的问题。对于否决这个问题的人,您能否补充一些关于您为什么要这样做的信息?我很乐意编辑我的问题以了解我的错误。
-
我确实添加了解释。
-
哦,对不起,我不知道那是你,我希望这个错误对你有帮助
标签: javascript node.js elasticsearch electron elasticsearch.js