Node.js 新手节点JS查询

Node.js 新手节点JS查询,node.js,Node.js,我是node.js新手,我想知道一些基本的事情: 将项目文件放在哪里?与PHP一样,我们将它们放在www/或htdocs/中 我将它们放在文档中的一个文件夹中,并尝试node/path/to/folder/example.js。这是正确的吗 我尝试了node官方文档中的第一个程序,它只是将..打印到控制台,而不是打印服务器运行在127.0.0.1:8080。文件夹结构可能是原因之一吗 也可以使用node.js创建整个网站,或者只创建特定的模块?什么样的模块 请引导我 谢谢 编辑: 这是我尝试过的

我是node.js新手,我想知道一些基本的事情:

  • 将项目文件放在哪里?与PHP一样,我们将它们放在
    www/
    htdocs/

  • 我将它们放在文档中的一个文件夹中,并尝试
    node/path/to/folder/example.js
    。这是正确的吗

  • 我尝试了node官方文档中的第一个程序,它只是将
    ..
    打印到控制台,而不是打印
    服务器运行在127.0.0.1:8080
    。文件夹结构可能是原因之一吗

  • 也可以使用node.js创建整个网站,或者只创建特定的模块?什么样的模块

  • 请引导我

    谢谢

    编辑:

    这是我尝试过的代码,它是Node文档中的第一个“简单Web服务器”示例:

    var http = require('http');
    
    http.createServer(function (request, response) {
        response.writeHead(200, {'Content-Type': 'text/plain'});
        response.end('Hello World\n');
    }).listen(8124);
    
    console.log('Server running at http://127.0.0.1:8124/');
    
    编辑:

    此代码仅打印出以下内容:

    >node example.js
    ...
    
    甚至没有返回到节点提示

  • 只要运行
    节点
    命令的用户有权访问该位置,那么将文件放置在何处并不重要

    事实上,我建议您将node.js源文件放在
    www
    htdocs
    文件夹(或任何可公开使用的文件夹)之外,否则
    .js
    源文件在使用您的Web服务器提供服务时可能是世界可读的(包括源文件中可能存在的任何安全凭据,使您暴露)

  • 是的,这是运行节点脚本的正确方法。但是,我建议首先将
    cd
    放入正确的目录中,然后从那里运行
    node example.js
    ,以防止路径解析错误,特别是当您以后开始使用各种
    npm
    模块时

  • 可能不是。如果没有看到您试图首先运行的代码,很难判断,但是如果由于文件夹结构等原因出现任何路径解析错误,
    节点将以严重错误退出,而不是打印“…”

  • 是的,可以使用
    node
    构建整个网站。事实上,有各种
    npm
    模块可以帮助您简化这一过程。我建议您看看:

    这些框架提供了大量扩展
    节点
    的功能,使其更适合作为一个成熟的Web服务器(cookie、vhost、会话、路径路由等)

  • 编辑

    详细说明第3号答复: 我已经尝试了您粘贴的代码,都是从正确的文件夹中粘贴的,正如我在answer nr.2中建议的那样,并且使用了绝对路径;它们都可以正常工作:

    remco@Prosperpine ~ $ node tests.js 
    Server running at http://127.0.0.1:8124/
    ^C
    
    remco@Prosperpine ~ $ cd /
    remco@Prosperpine / $ node /Users/remco/tests.js 
    Server running at http://127.0.0.1:8124/
    
    因此,节点服务器启动并在
    http://127.0.0.1:8124/
    ,这同样有效:

    remco@Prosperpine ~ $ wget http://127.0.0.1:8124/ && cat index.html
    --2012-07-03 13:25:32--  http://127.0.0.1:8124/
    Connecting to 127.0.0.1:8124... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: unspecified [text/plain]
    Saving to: `index.html'
    
        [ <=>     ] 12          --.-K/s   in 0s      
    
    2012-07-03 13:25:32 (901 KB/s) - `index.html' saved [12]
    
    Hello World
    remco@Prosperpine ~ $ 
    
    remco@Prosperpine约$wgethttp://127.0.0.1:8124/ &&cat index.html
    --2012-07-03 13:25:32--  http://127.0.0.1:8124/
    正在连接到127.0.0.1:8124…已连接。
    HTTP请求已发送,正在等待响应…200确定
    长度:未指定[文本/纯文本]
    保存到:`index.html'
    []12---K/s在0s中
    2012-07-03 13:25:32(901kb/s)-'index.html'已保存[12]
    你好,世界
    remco@Prosperpine ~ $ 
    

    因此,我们可以得出结论,您正在尝试的代码没有问题。您的
    节点安装可能有问题。这是在Linux、OSX还是Windows上?

    您的问题是,您试图从节点的REPL内部运行服务器。您需要直接从Windows命令行运行它。“…”这意味着节点的REPL尚未看到有效JavaScript表达式的结尾,因此等待您输入更多内容


    作为对您上次对上一个答案的评论的回应,REPL在调用
    console.log()
    后打印“undefined”的原因是它将其作为表达式进行计算(这碰巧有副作用,即打印出消息),然后尝试打印其返回值;因为
    console.log()
    实际上不会返回任何内容(它只用于其副作用),这就是为什么会出现“未定义”的原因.

    感谢您的详细回复!我已将尝试的代码添加到我的问题中…请检查并让我知道是否有问题…@AvantGarde更新了答案,并提供了代码的测试结果:如果此脚本不起作用,您的node.js安装似乎有问题。它是Windows 7。我尝试了一个简单的
    控制台。日志(‘你好,世界’)
    ,它可以工作,但也会在消息后显示“未定义”。再次感谢您提供的详细帮助。我找到了原因,我是从REPL而不是Windows命令行运行该文件的!您能给我们显示一个屏幕截图或什么吗?它没有理由打印
    。现在无法显示,因为它在其他机器上!Che请检查我的编辑…没错!我是从REPL而不是Windows命令行运行程序的。谢谢!