【问题标题】:How can I pass an argument into my Javascript code from command line?如何从命令行将参数传递到我的 Javascript 代码中?
【发布时间】:2020-11-29 09:48:43
【问题描述】:

我的 JS 文件“login.js”可以使用“node login.js”从命令行运行。如果我想更改使用的 URL,我必须进入文件并编辑 URL。

我希望能够通过命令行将 URL 作为参数传递,例如“node login.js https://example.com”以及使用该 URL 的代码。我认为这很简单,但我似乎无法通过在线阅读来解决它。

const puppeteer = require('puppeteer');
const C = require('./constants');
const USERNAME_SELECTOR = '#email';
const PASSWORD_SELECTOR = '#password';
const CTA_SELECTOR = '#next';
const CTA_SELECTOR2 = '#submit-btn';


async function startBrowser() {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  return {browser, page};
}


async function closeBrowser(browser) {
  return browser.close();
}

async function playTest(url) {
  const {browser, page} = await startBrowser();
  page.setViewport({width: 1366, height: 768});
  await page.goto(url);
  await page.waitForSelector(USERNAME_SELECTOR);
  await page.click(USERNAME_SELECTOR);
  await page.keyboard.type(C.username);
  await page.click(CTA_SELECTOR);
  console.log('before waiting');
await delay(10000);
console.log('after waiting');
  await page.click(PASSWORD_SELECTOR);
  await page.keyboard.type(C.password);
  await page.click(CTA_SELECTOR2);
  await page.waitForNavigation();
  await page.screenshot({path: 'screenshot.png'});
}

(async () => {
  await playTest("https://example.com");
  process.exit(1);
})();

function delay(time) {
  return new Promise(function(resolve) { 
      setTimeout(resolve, time)
  });
}

【问题讨论】:

标签: javascript node.js command-line puppeteer


【解决方案1】:

在许多程序(包括节点)中,参数可以通过某些东西传递给您的脚本 我们称之为标志。

节点本身是一个程序,当您编写node foo.js 时,foo.js 本身就是节点程序的参数。要通过命令行传递参数,请通过双破折号使用标志。

例子:

node foo.js bar/baz/index.html 

现在可以通过process.argv 访问该值,这是传递给它的所有参数的数组。它看起来像这样

['node.exe', 'foo.js', 'bar/baz/indez.html']

【讨论】:

  • 谢谢。这是否意味着在我的情况下我可以使用“node login.js --url="example.com" 并编辑我的代码... (async () => { await playTest("URL"); process.exit( 1); })(); 但是我需要添加一个 URL const 吗?
  • 使用process.argv[2]获取字符串值
猜你喜欢
  • 2019-06-01
  • 1970-01-01
  • 2012-07-26
  • 2018-09-02
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 2017-02-19
相关资源
最近更新 更多