我用電子使用一個小項目elasticsearchjs。但我不知何故遇到了一些阻礙我的奇怪事物。ElasticSearchJS與電子
電子,我有一個按鈕後,打開點擊觸發功能:
<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
輸出,但不知何故彈性搜索功能不工作,我得到一個超時錯誤......
但是,如果我加倍調用函數,並異步調用添加到elasticsear CH 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
})
可能我的電子功能,可以防止我的代碼工作錯過了什麼?
謝謝大家對你的那種反應,並有一個愉快的一天。
編輯:下面是詳細的錯誤和堆棧跟蹤:
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
恰恰是承諾拒絕與什麼?什麼是錯誤信息?堆棧跟蹤在哪裏? –
我編輯了我的問題與錯誤消息和堆棧跟蹤。對於那些低估了這個問題的人來說,能否請你補充一些關於你爲什麼會這樣做的信息?爲了理解我的錯誤,我很樂意編輯我的問題。 – Hammerbot
我確實添加了一個解釋。 –