需要帮助来了解我的应用如何启动

时间:2018-10-22 16:06:18

标签: node.js package.json

我有一个可在命令行中播放井字游戏和四连奏的应用程序。有些代码是我未编写的样板,并且在理解其工作方式时遇到了麻烦。

当我运行npm start时,“连接四人”会按预期播放,但是无法播放井字游戏。我希望用户选择玩任一游戏。理想情况下,我会提示用户,但是每个游戏都有一个命令就可以了。

有一个简短的server.js文件,看起来像这样:

require('babel-polyfill');
require('babel-register');
require('.');

在我的package.json中,我有main: "./connect4/index.js"

据我所知,这是与启动应用程序相关的所有代码。对于这个模糊的问题,我表示歉意。但是该应用程序不是很复杂,因此希望它有意义。

3 个答案:

答案 0 :(得分:0)

您可以通过两种方式执行此操作。第一种是使用npm软件包查询器,它允许您在命令行中提示用户。

另一种选择是使用内置的process.argv节点,该节点的属性将返回包含您传递的所有命令行参数的数组。请注意,使用此选项时,位置[0]将默认为计算机上节点的位置,位置[1]将默认为当前文件位置。要访问自定义参数,您必须从位置[2]等处开始。因此,您可以根据位置2的argv值编写运行tic-tac-toe或连接4的逻辑。因此,在代码中的某处您会有所作为像

 if (process.argv[2] === "tick-tack-toe") {
  console.log("do tick tack toe logic");
}else if (process.argv[2] === "connect-4") {
  console.log("do connect 4 logic");
}

希望这会有所帮助。您可以在https://nodejs.org/docs/latest/api/process.html#process_process_argv

处了解有关process.argv的更多信息。

这是github上查询者的链接 https://github.com/SBoudrias/Inquirer.js#readme

答案 1 :(得分:0)

作为背景,如果在package.json文件中未指定npm start,则执行scripts.start时npm将尝试运行命令node server.js

假设执行node ./connect4/index.js可行,并且tic-tac-toe的组织方式与connect4类似,则以下任何一种都可以工作。

  • 直接使用node ./ticTacToe/index.js直接执行命令(假设ticTacToe是目录,index.js是要执行的主要文件)。
  • 在package.json中添加一个scripts: {ticTacToe: "node ./ticTacToe/index.js"}(或任何您想调用的名称),然后执行npm run ticTacToe

答案 2 :(得分:0)

感谢您的反馈。我添加了一个顶级index.js文件,将每个游戏的相关代码导入了该文件,并使用了Inquirer来提示用户选择游戏。

无法将ticTacToec4的脚本添加到package.json上,因为我认为我的server.js文件需要解析导入/导出语法。

如果好奇,回购协议是here