成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

nodejs執(zhí)行js文件和命令行下輸入的區(qū)別

孫淑建 / 1328人閱讀

摘要:這里有一個文件,內(nèi)容是部署編譯好的文件到上下面是該文件的內(nèi)容在終端中執(zhí)行該文件結(jié)果是同樣,將上面的代碼在命令行中單行下輸入就能獲得的值非這里的問題困擾了我兩個晚上,后來發(fā)現(xiàn)是異步函數(shù)問題。

這里有一個nodejs文件,內(nèi)容是部署編譯好的sol文件到testrpc上
下面是該文件的內(nèi)容:
Web3 = require("web3");
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
web3.personal.newAccount("abc");//create a new account,used to store transfer fee
//testrpc has 3 acccounts,this is the 4th.
fs = require("fs");
json_file = fs.readFileSync("dapp.json");
dapp_info = JSON.parse(json_file);
abiInfo = dapp_info.contractABI;
byteCode = dapp_info.contractBYTE;
coinContract = web3.eth.contract(abiInfo);
deployed = coinContract.new(300000000,1,web3.eth.accounts[3],{data:byteCode,from:web3.eth.accounts[0],gas:3000000});
console.log(deployed.address);//prompt undefined
在終端中node執(zhí)行該js文件

$node deploy_contract.js
結(jié)果是
undefined

同樣,將上面的代碼在node命令行中單行下輸入就能獲得deployed.address的值(非undefined)
$node
>Web3 = require("web3");
>web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
>web3.personal.newAccount("abc");//create a new account,used to store transfer fee
...
這里的問題困擾了我兩個晚上,后來發(fā)現(xiàn)是nodejs異步函數(shù)問題。
nodejs異步函數(shù),最好做一個回調(diào)處理。
deployed = coinContract.new(300000000,1,web3.eth.accounts[3],{data:byteCode,from:web3.eth.accounts[0],gas:3000000});console.log(deployed.address);
這里就是異步函數(shù),因?yàn)闆]加回調(diào)處理,導(dǎo)致deployed.address是undefined,若進(jìn)行其他操作,如:transfer,也會出錯。
但是,在node命令行下,單行輸入都隱含了異步函數(shù)執(zhí)行直到完成這個過程,一旦換成直接執(zhí)行js文件,異步函數(shù)執(zhí)行問題就出現(xiàn)了。
下面是這確使用方法:
deployed = coinContract.new(300000000,1,web3.eth.accounts[3],{from:web3.eth.accounts[0],data:byteCode,gas: 3000000}, function(err, coinContract){
if(!err){
    if(!coinContract.address)
    {
        console.log("Cannot get the deploy address");
    }
    else
    {
        console.log("Get the deploy address");
        //do something
    }
}
else
{
    console.log(err);
}});
這里加了一個回調(diào)函數(shù)function(err, coinContract),但是仍然會提示Cannot get the deploy address(這個暫時我也沒搞清楚),然后提示Get the deploy address。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/23994.html

相關(guān)文章

  • 造輪子之 npm i -g creatshare-app-init 源碼淺析

    摘要:剛剛在里說明的回調(diào)函數(shù)綁定在命令下。使用開源協(xié)議源代碼都放在目錄下目錄要對不同的代碼進(jìn)行合理的分層。,我是韓亦樂,現(xiàn)任本科軟工男一枚。 以我的小經(jīng)驗(yàn)來看,軟件萌新寫出來的代碼大多無法直視。具體現(xiàn)象包括空格和換行符亂用、文件夾和變量的命名多使用拼音等。坐不住的我,便想到了通過 ESLint 配置文件來規(guī)范實(shí)驗(yàn)室的 JavaScript 代碼規(guī)范的 Idea。 于是巧遇前實(shí)驗(yàn)室畢業(yè)學(xué)長曾經(jīng)...

    adie 評論0 收藏0
  • PHP命令行下世界

    摘要:命令行參數(shù)詳解查看的所有命令行參數(shù),使用命令。我們將會對大部分常用的命令行參數(shù)進(jìn)行一一解釋,以加深對能力的認(rèn)識,更加快捷的在服務(wù)端命令行下使用或者調(diào)試各種因?yàn)閷Νh(huán)境不熟悉而出現(xiàn)的問題。 PHP作為一門web開發(fā)語言,通常情況下我們都是在Web Server中運(yùn)行PHP,使用瀏覽器訪問,因此很少關(guān)注其命令行操作以及相關(guān)參數(shù)的使用,但是,特別是在類Unix操作系統(tǒng)上,PHP可以作為一門腳本...

    calx 評論0 收藏0
  • node.js簡單爬蟲

    這里假設(shè)你已經(jīng)安裝好node.js和npm,如果沒有安裝,請參閱其他教程安裝。 配置首先是來配置package.json文件,這里使用express,request和cheerio。 package.json如下: { name: node-scrape, version: 0.0.1, description: Scrape, main: server.js, depende...

    tinylcy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<