"require" is not defined错误 - JavaScript

3
当我运行我的 .html 文件时,在浏览器中出现了这个错误。
Uncaught ReferenceError: require is not defined 

我的File_system.html文件如下:

<!DOCTYPE html> 
<html> 
<head> 
<title>window.requestFileSystem problem</title>

<script type="text/javascript" src="server.js"></script>
<script>
function onInitFs(fs) {
console.log(fs);   
console.log(fs.getDirectory());
}

function errorHandler(e) {
var msg = '';
console.log(e);

switch (e.code) {
case FileError.QUOTA_EXCEEDED_ERR:
  msg = 'QUOTA_EXCEEDED_ERR';
  break;
case FileError.NOT_FOUND_ERR:
  msg = 'NOT_FOUND_ERR';
  break;
case FileError.SECURITY_ERR:
  msg = 'SECURITY_ERR';
  break;
case FileError.INVALID_MODIFICATION_ERR:
  msg = 'INVALID_MODIFICATION_ERR';
  break;
case FileError.INVALID_STATE_ERR:
  msg = 'INVALID_STATE_ERR';
  break;
default:
  msg = 'Unknown Error';
  break;
};

console.log('Error: ' + msg);
}
window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.PERSISTENT, 1024*1024,onInitFs,errorHandler);

</script> 
</head> 
<body>
</body> 
</html>

我的server.js文件如下:

var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('File_system.html');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(index);
}).listen(8080);

这是什么问题?请帮忙

我应该能够在控制台中检索所有的文件系统方法,并使用它来创建一个目录。但是我现在卡住了。 或者有没有直接在浏览器中运行的方法?


1
你的 server.js 是一个 Node.js 文件,不适用于浏览器。 - Andrew
请将其中一个答案标记为正确答案。谢谢! - AlexGrafe
3个回答

4

编辑:重新阅读您的原始帖子,有可能您 确实 在Node环境中运行此Node.js脚本,尝试使用fs加载您的.html文件。如果是这样的话,您正在像这样在您的.html文件中调用您的Node server.js脚本:

<script type="text/javascript" src="server.js"></script>

只需删除此行,您就不会再收到您看到的错误。


如先前所述,您正在尝试在客户端脚本中实现Node.js代码。理论上可以这样做,但不建议这样做,因为Node.js并不是为此目的而设计的(它是一个服务器!)

您应该使用XHR/ajax从客户端向服务器发出http请求(而不是fs),然后在后端处理这些内容。这可以很容易地通过传统的Web堆栈(如Apache和php)完成,或者如果您真的想使用fs,则可以在Node.js上运行API,并使用XHR/ajax将客户端连接到它,或者实现像Sails.js这样的MVC堆栈。


好的,我明白这是关于什么的。但是我想使用 fs 来创建目录。如果我不能从 server.js 中获取 fs,我该如何在 .html 中使用它来做一些事情呢?例如:onInitFs(fs) - Archana
我完全不确定你在问什么?听起来对我来说是一个全新的问题 ;) - brandonscript
很简单...看...我正在使用server.js创建fs,所以我想使用这个fs创建一个目录并存储一些内容,并使用它来创建网页(设置服务器以存储/检索文件)。因此,如果我无法在我的HTML中访问fs,我该如何使用它。我相信有一些方法可以做到这一点。 - Archana
你不能直接这样做。你需要构建一个后端API服务来处理它。 - brandonscript
好的,你有没有任何演示例子呢?我找不到一行代码来完成它。我已经搜索了,还在继续搜索。 - Archana
如果您想使用jQuery,使用$.ajax非常容易;否则,您可以在JavaScript中使用原生的方式。对于服务器端,请参见我在答案中提供的Sails.js链接,或者您可以使用像CodeIgniter或Laravel这样的PHP框架。 - brandonscript

3

您不能在浏览器中使用node.js脚本。只能在node.js中运行它。


1
除非您使用browserifywebpack(作为参考*)。 - Mikeumus

2

server.js应该在服务器端运行(已安装nodejs)。


那么我该如何在我的HTML5中获取fs并创建目录等内容呢? - Archana
你不需要这样做。出于安全原因,浏览器大部分情况下禁止访问文件系统。 - Chris Tavares

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接