2016-12-13 13 views
0

誰かがmodule.exportsを外部から更新する方法を知っています。promiseの結果をmodule.exportsに渡す方法

私は他のツールで必要とされているモジュールを持っていますNightwatch(js configをとる)。私は約束に固執している、これを解決する方法を知らない。なぜなら、ロードされたモジュールstart_processは未定義であるからです。 start_process変数を持つ

// local.js 
module.exports = { 
    host: "127.0.0.1", 
    port: "4444", 
    start_process: undefined, 
    server_path: "./node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-2.53.1.jar", 
    cli_args: { 
     "webdriver.chrome.driver": "./node_modules/chromedriver/lib/chromedriver/chromedriver", 
     "driver.version": "2.24" 
    } 
}; 

require('tcp-port-used').check(4444).then((inUse) => { 
    module.exports.start_process = !inUse; 
    return module.exports; 
}); 

// nightwatch.conf.js 
var server = require("./local.js"); 
console.log(server.start_process); 

答えて

1

:これを試してみてください。あなたは(起動時に通常軽蔑やや許容されている)同期tcp-port-usedを呼び出すための方法を見つける必要があるでしょうか、あなただけの約束自体をエクスポートします。あなたのモジュールからプロパティを使用したい人は誰でも

module.exports = require('tcp-port-used').check(4444).then(inUse => { 
    return { 
     host: "127.0.0.1", 
     port: "4444", 
     start_process: !inUse, 
     server_path: "./node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-2.53.1.jar", 
     cli_args: { 
      "webdriver.chrome.driver": "./node_modules/chromedriver/lib/chromedriver/chromedriver", 
      "driver.version": "2.24" 
     } 
    }; 
}); 

ますそれらが利用可能になるのを待たなければなりません。

+0

私はすでに約束を出していると思っていますが、それはいいと思いますが、私が約束しているモジュールは約束どおりに動作しません。あなたは 'require( 'tcp-port-used')することができるか考えていますか?check(4444)'が正しく同期されていますか? – oavasiliev

-1

あなたが実際に呼び出し側のモジュールのエクスポートを変更している

module.exports.start_process = !inUse; 

を行い、ない1。モジュールがちょうどロードされた場合は、値はまだundefinedある

var foreignmodule = require('tcp-port-used'); 
foreignmodule.check(4444).then((inUse) => { 
    foreignmodule.start_process = !inUse; 
    return module.exports; 
}); 
+0

外国のモジュールに注入する必要はありません。 – oavasiliev

関連する問題