2017-08-15 53 views
0

我用電子使用一個小項目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 
+0

恰恰是承諾拒絕與什麼?什麼是錯誤信息?堆棧跟蹤在哪裏? –

+0

我編輯了我的問題與錯誤消息和堆棧跟蹤。對於那些低估了這個問題的人來說,能否請你補充一些關於你爲什麼會這樣做的信息?爲了理解我的錯誤,我很樂意編輯我的問題。 – Hammerbot

+0

我確實添加了一個解釋。 –

回答

1

我猜,有或者是與elasticsearchJS和電子錯誤或你正在做的事情是錯誤的。

由於使用的是電子,你應該嘗試使用軟件包的瀏覽器版本。

,而不是要求elasticsearch,儘量要求elasticsearch瀏覽器:

yarn add elasticsearch-browser // or npm install elasticsearch-browser

然後只需更換您的

import elasticsearch from 'elasticsearch'

通過

import elasticsearch from 'elasticsearch-browser'.

包的這個版本將代替使用本機HTTP模塊從節點XHRHttpRequest。您隨後可以使用Chrome網絡標籤更輕鬆地監控您的請求。

我希望這有助於

點擊此處瞭解詳情:https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/browser-builds.html 聊天對話結束 鍵入消息...

+0

哇,這工作,謝謝!我想這確實是錯的。但無論如何,這很有用,謝謝! – Hammerbot