执行文件创建的服务器端脚本

时间:2017-04-30 20:43:39

标签: node.js

使用node.js,我正在开发一个小型Web应用程序,希望在服务器上创建一个文件,并单击浏览器上的按钮。我在公共文件夹中有一个小文件“file.js”,如下所示,

var fs = require("fs");

console.log("Going to write into existing file");

fs.writeFile('input.txt', 'Simply Easy Learning!',  function(err) {
   if (err) {
      return console.error(err);
   }

   console.log("Data written successfully! checked");
   console.log("Let's read newly written data");
   fs.readFile('input.txt', function (err, data) {
      if (err) {
         return console.error(err);
      }
      console.log("Asynchronous read: " + data.toString());
   });
});

当我执行“node file.js”并创建input.txt时,它工作正常。在html页面中调用此文件,尝试通过ajax调用进行调用,如下所示,

<!DOCTYPE html>
<html>
<head>
<meta content="en-us" http-equiv="Content-Language">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>  

<script>
console.log(' firstpage ');
function readTextFile(){
console.log(' in function readTextFile ');
var dataString;
$.ajax({
  type: "GET",
  url: "file.js",
  data: dataString,
  success: function(err,data){
        alert( "Data Saved: " + data );
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
     console.log(errorThrown);
  }
});

}

</script>
</head>
<body>
<p class="auto-style1"><strong>Welcome to MyPage</strong></p>
<div >
<input class="myButton" type="button" onclick="readTextFile()" value="Submit" />
</div>
</body>
</html>

按下按钮会出错,

ReferenceError: require is not defined
    at eval (eval at <anonymous> (jquery.min.js:2), <anonymous>:1:10)
    at eval (<anonymous>)
    at jquery.min.js:2
    at Function.globalEval (jquery.min.js:2)
    at text script (jquery.min.js:4)
    at Pc (jquery.min.js:4)
    at x (jquery.min.js:4)
    at XMLHttpRequest.b (jquery.min.js:4)

请帮助,我在哪里犯错误以及如何解决。非常感谢提前。

1 个答案:

答案 0 :(得分:0)

有几件事可以帮助你理解出了什么问题:

1)运行“node file.js”正在node.js环境中的服务器上执行JavaScript文件。

2)当您运行网页并获取并执行file.js时,您的浏览器会直接在浏览器中使用自己的JavaScript解释器运行file.js.

3)node.js具有服务器端应用程序的附加功能,一个是“require”语法。这允许服务器端应用程序包含其他JavaScript文件,而不是使用脚本src标记

将它们加载到某些HTML中

4)node.js还提供了一些对服务器端应用程序特别有用的模块,例如“fs”

您的file.js看起来像是专门编写为在服务器端而不是在浏览器客户端上运行。它使用node.js语法甚至操作文件系统上的文件

您需要运行node.js服务器(express.js是一种流行的选择),它可以通过某个API端点执行您的file.js。然后更改浏览器代码以调用端点,而不是尝试直接在浏览器中获取和执行file.js