node.js中的模块无法正常工作

时间:2016-03-06 05:12:36

标签: node.js module

我有3个文件,一个简单的.html:

 <!DOCTYPE html>
 <html>
 <head>
     <title>meh server</title>
 </head>

 <body>
     <script src = "index.js"></script>
 </body>
 </html>

'server.js':

module.exports.proto = function() {
        alert("Working function");
    }
};

'index.js':

 var server = require('./server');

 server.proto();

全部在同一个文件夹中。我在我的电脑上安装了node.js,并在3个文件的文件夹上的windows cmd''npm install nodejs'上输入。我无法收到来自server.js的警报,我不知道为什么。

4 个答案:

答案 0 :(得分:1)

首先,Node.js是一个运行时,没有DOM。因此,节点中未定义“警报”。

其次,您需要通过执行节点二进制&amp;运行节点程序。将文件名作为命令行参数传递,如

node your_file_name.js

用于在命令行和&amp ;;中获得响应在浏览器中,您需要执行以下操作:

命令行:

file:server.js

module.exports.proto  =  function () {
    console.log("Working function");
}

file:index.js

var server = require("./server");
server.proto();

现在在命令行中运行以下命令:

node index.js

您将在命令行中看到所需的输出。

浏览器:

file:server.js

module.exports.proto  =  function () {
    return "Working function";
}

file:index.js

var server = require("./server");

var httpServer = require("http");
httpServer.createServer(function (request, response) {
    response.writeHead(200, {"Content-Type": "text/html"});
    response.write(server.proto());
    response.end();  
}).
listen(3000, function () {
    console.log("server listening on 3000");
});

现在在命令行中运行以下命令:

node index.js

您将在命令行中看到以下内容:

server listening on 3000

现在去浏览器&amp;点击以下内容:

http://localhost:3000/

您将在浏览器中看到所需的输出。

***有关详细信息,我建议您查看节点的“http”API。 https://nodejs.org/api/http.html

感谢。希望它有所帮助...

答案 1 :(得分:0)

首先,您的server.js文件中存在语法错误。

module.exports.proto = function() {
   alert("Working function");
};

其次,您在节点中没有'alert'功能。您可以编写console.log而不是

 module.exports.proto = function() {
       console.log("Working function");
    };

然后从命令提示符

运行index.js
node index.js

您可以在命令提示符中看到“工作功能”消息。

在浏览器中打开html文件不会以同样的方式工作。你真的需要了解节点:)

修改 index.js

var server = require('./server');

 var http = require('http');
 fs = require('fs');

 http.createServer(function(req, res) {
     server.proto();
     fs.readFile('index.html', 'binary', function(err, file) {
      if(err) {
         res.writeHead(500, {"Content-Type": "text/plain"});
         res.write(err + "\n");
         res.end();
         return;
      }

      res.writeHead(200, {"Content-Type": "text/html"});
      res.write(file, "binary");
      res.end();
      });
 }).listen(3000, function() {
    console.log("Server started");
 });

现在,如果从命令提示符运行index.js,请转到浏览器中的localhost:3000,您可以按照实际需要的方式查看它。

答案 2 :(得分:0)

哦! alert不是node.js识别的任何内容,它是浏览器的一部分。

您应该记录您的消息,而不是使用alert,您似乎还没有复制完整代码,或者它确实是语法错误,因此请将其修复为:

module.exports.proto = function() {
    console.log("Working function");
}

现在您可以使用IDE运行index.js或转到任何shell并拍摄node index,它将运行节点代码。

其次如果您希望node.js服务器在浏览器中发送或打开html文件Follow This Tutorial

答案 3 :(得分:0)

好吧,安装Node.js是一个开始,但似乎你对node.js是什么感到困惑。 Node是运行时。是的,它建立在V8之上(谷歌Chrome中同样的JavaScript VM),但没有DOM,没有浏览器API,也绝对不需要浏览器。因此,alert在Node中不存在。我建议您熟悉API docs

如前所述,您通过执行node二进制文件并将文件作为参数传递(有一个repl和其他选项)来运行节点程序,就像运行python或ruby程序一样。在你的情况下:

node index.js