簡體   English   中英

node.js process.env 在命令行中不起作用

[英]node.js process.env not working in command line

我正在參加關於從頭開始編寫區塊鏈的在線課程。 本課程使用 javascript 和 node.js。 我對這些技術非常陌生,但到目前為止,我一直遵循 T 的課程。我正在粘貼相關代碼 - 應用程序文件(索引):

const express = require('express');
const bodyParser = require('body-parser');
const Blockchain = require('../blockchain');
const P2pServer = require('./p2p-server');

const HTTP_PORT = process.env.HTTP_PORT || 3001;

const app = express();
const bc = new Blockchain();
const p2pServer = new P2pServer(bc);

app.use(bodyParser.json());

app.get('/blocks', (req, res) => {
    res.json(bc.chain);
});

app.post('/mine', (req, res) => {
    const block = bc.addBlock(req.body.data);
    console.log(`New blovk added: ${block.toString()}`);

    res.redirect('/blocks');
});

app.listen(HTTP_PORT, () => console.log(`Listening on port ${HTTP_PORT}`));
p2pServer.listen();

以及來自 p2p-server.js 的代碼:

const Websocket = require('ws');

const P2P_PORT = process.env.P2P_PORT || 5001;
const peers = process.env.PEERS ? process.env.PEERS.split(',') : [];
//HTTP_PORT=3002 P2P_PORT=5003 PEERS=ws://localhost:5001 npm run dev

class P2pServer {
    constructor(blockchain) {
        this.blockchain = blockchain;
        this.sockets = [];
    }

    listen() {
        const server = new Websocket.Server({ port: P2P_PORT });
        server.on('connection', socket =>this.connectSocket(socket));

        this.connectToPeers();

        console.log(`listening to peer-to-peer connections on: ${P2P_PORT}`);
    }

    connectToPeers() {
        peers.forEach(peer => {
            const socket = new Websocket(peer);

            socket.on('open', () => this.connectSocket(socket));
        });
    }

    connectSocket(socket){
        this.sockets.push(socket);
        console.log('socket connected');
    }
}

module.exports = P2pServer;

當我嘗試在命令行中運行以下命令時:

HTTP_PORT=3002 P2P_PORT=5003 PEERS=ws://localhost:5001 npm run dev

我得到以下信息:

'HTTP_PORT' is not recognized as an internal or external command, operable program or batch file.

由於某種原因, process.env 沒有接收輸入並將其傳遞給應用程序。 這里有什么問題? 謝謝!

編輯:我被要求添加package.json

{
  "name": "sf-chain",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "jest --watchAll",
    "dev-test": "nodemon dev-test",
    "start": "node ./app",
    "dev": "nodemon ./app"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "jest": "^23.1.0",
    "nodemon": "^1.17.5"
  },
  "dependencies": {
    "body-parser": "^1.18.3",
    "crypto-js": "^3.1.9-1",
    "express": "^4.16.3",
    "ws": "^5.2.0"
  }
}

您正在使用:

$ HTTP_PORT=3002 P2P_PORT=5003 PEERS=ws://localhost:5001 npm run dev

由於窗口Powershell無法識別此命令,因此顯示錯誤。

相反,您應該使用:

set HTTP_PORT=3002 && set P2P_PORT=5002 && set PEERS=ws://localhost:5001 && npm run dev

我相信正在做同樣的課程。 我相信你可能已經知道了,但我在 Git Bash 而不是 Powershell 中嘗試了相同的步驟,並且成功了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM