如何从命令行将参数传递到Javascript代码中?

如何从命令行将参数传递到Javascript代码中?,javascript,node.js,command-line,puppeteer,Javascript,Node.js,Command Line,Puppeteer,我的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 USE

我的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)
  });
}
在许多程序(包括node)中,参数可以通过某种方式传递给脚本 我们叫旗子

节点本身是一个程序,当您编写
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=”“并编辑我的代码以便……(async()=>{await playTest(“url”);process.exit(1);}();但是我需要添加url常量吗?使用
process.argv[2]
来获取字符串值