确定并更改 node.js 的 DocumentRoot/port 并运行带有参数的函数
Posted
技术标签:
【中文标题】确定并更改 node.js 的 DocumentRoot/port 并运行带有参数的函数【英文标题】:Determine & change DocumentRoot/port of node.js & run a function w/parameters 【发布时间】:2018-07-31 06:01:42 【问题描述】:如何确定和更改 Node.js 上的“DocumentRoot”等效(Apache)和端口号?我需要通过调用函数并传递一些参数来测试脚本文件(是的,我知道该文件可以自动执行它)。
documentation 中没有“入门”或提及这一点。
【问题讨论】:
【参考方案1】:Apache HTTPD 是一个通用的 Web 服务器。 Node.js 是一个开发框架,包含一个用于创建 HTTP 服务器的标准库。因此,基于 Node.js 的应用程序没有像 Apache HTTPD 那样的标准配置。
使用 Node.js 编写 Web 服务器的基本示例位于 https://nodejs.org/api/synopsis.html#synopsis_example
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) =>
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
);
server.listen(port, hostname, () =>
console.log(`Server running at http://$hostname:$port/`);
);
也就是说,您定义文件从哪里加载以及它们在哪个端口上提供服务。
这就是 Fastify、Hapi 和 Express 等框架的用武之地。这使得编写通用 Web 服务器变得更加容易。
【讨论】:
一位朋友建议 Express,我按照这里的指示进行操作:coderwall.com/p/mbov6w/running-nodejs-and-express-on-windows 然而C:\MEDIA\INTERNET\Node.js>node app module.js:540 throw err; Error: Cannot find module
。我对设置 VM 不感兴趣,我想在 Windows 上本地运行它。该教程缺少哪一部分?
啊:node "C:\Users\example\index.js"
... 那么我该如何执行一个名为callWeatherApi(city, date)
的函数呢?我可以填写自己的参数。这确实是我最终要问的问题,尽管我尽量让事情保持相当简单,因为我知道它不会像 Apache 那样简单。
Apache HTTPD 是一个应用程序而不是一个开发框架。它们不是等价的。使用nodeschool.io 学习Node.js。
虽然您发布的内容有助于跳过一些步骤,但我会对其进行投票并接受我自己发布的答案。我认为这是公平的,因为一开始就很难提出问题。谢谢。
您在回答后更改了问题。当一个目标不断前进时,它是无法完成的。测试应该使用像 node-tap.org 这样的库来完成【参考方案2】:
我首先安装了 Node.js,它在 Windows 中只有一个命令提示符。仍然不确定端口号。
节点似乎从它的目录执行脚本(例如C:\Node.js\
)。正如詹姆斯在另一个答案中提到的那样,Node.js 本身并没有做太多事情。我关注了tutorial on getting Express to work on Windows。本教程未能提及 where 脚本的运行位置,因此请忽略过去在 normal 命令提示符(不是 Node 的控制台)上运行以下命令的指示:
Run npm install
npm install express -g
npm install url -g
npm install fresh -g
npm install cookie -g
npm install methods -g
npm install crc -g
npm install send -g
npm install connect -g
npm install commander -g
npm i -D run-func
好的,最后一行代码允许我们运行一个函数并传递我通过Pawel's answer here找到的参数。
所以现在我可以执行以下操作:
node run-func "C:\Users\John\HTTP\index.js" function_name param1 param2
【讨论】:
全局安装这些模块不是一个好习惯。模块应该安装在它们所应用的项目的本地。以上是关于确定并更改 node.js 的 DocumentRoot/port 并运行带有参数的函数的主要内容,如果未能解决你的问题,请参考以下文章
node.js async.each 回调,我怎么知道它啥时候完成?
如何配置 OpsWorks 以部署非官方支持的 Node.js 版本?