国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

nodejs執行js文件和命令行下輸入的區別

孫淑建 / 1326人閱讀

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

這里有一個nodejs文件,內容是部署編譯好的sol文件到testrpc上
下面是該文件的內容:
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執行該js文件

$node deploy_contract.js
結果是
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
...
這里的問題困擾了我兩個晚上,后來發現是nodejs異步函數問題。
nodejs異步函數,最好做一個回調處理。
deployed = coinContract.new(300000000,1,web3.eth.accounts[3],{data:byteCode,from:web3.eth.accounts[0],gas:3000000});console.log(deployed.address);
這里就是異步函數,因為沒加回調處理,導致deployed.address是undefined,若進行其他操作,如:transfer,也會出錯。
但是,在node命令行下,單行輸入都隱含了異步函數執行直到完成這個過程,一旦換成直接執行js文件,異步函數執行問題就出現了。
下面是這確使用方法:
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);
}});
這里加了一個回調函數function(err, coinContract),但是仍然會提示Cannot get the deploy address(這個暫時我也沒搞清楚),然后提示Get the deploy address

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/23994.html

相關文章

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

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

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

    摘要:命令行參數詳解查看的所有命令行參數,使用命令。我們將會對大部分常用的命令行參數進行一一解釋,以加深對能力的認識,更加快捷的在服務端命令行下使用或者調試各種因為對環境不熟悉而出現的問題。 PHP作為一門web開發語言,通常情況下我們都是在Web Server中運行PHP,使用瀏覽器訪問,因此很少關注其命令行操作以及相關參數的使用,但是,特別是在類Unix操作系統上,PHP可以作為一門腳本...

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

    這里假設你已經安裝好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

發表評論

0條評論

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