“require”未定义error-javascript

时间:2013-12-16 06:59:58

标签: javascript html5 node.js

运行.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);

这有什么问题?请帮忙

我应该能够在控制台中检索所有fs方法并创建一个目录。但我陷入了困境。 或者有没有办法直接在浏览器中运行?

3 个答案:

答案 0 :(得分:4)

编辑:重读原始帖子, 可能实际上在Node环境中运行此Node.js脚本,尝试使用fs加载.html文件。如果是这种情况,您就是在的.html文件中调用Node server.js脚本,如下所示:

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

只需删除此行,您就不应再收到所见的错误。


如前所述,您尝试在客户端脚本中实现Node.js代码。理论上这是can be done,但不建议使用,而Node.js根本就不是为此目的设计的(它是服务器!)

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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