使用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)
请帮助,我在哪里犯错误以及如何解决。非常感谢提前。
答案 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