【问题标题】:"require" is not defined error- javascript“require”未定义错误-javascript
【发布时间】:2014-01-03 12:01:50
【问题描述】:

我在运行 .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 方法并使用 tat 创建一个目录。但我陷入了困境。 或者有什么办法可以直接在浏览器中运行?

【问题讨论】:

  • 您的 server.js 是 nodejs 文件,不适用于浏览器。
  • 请将其中一个答案标记为正确答案。谢谢!

标签: javascript html node.js


【解决方案1】:

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

【讨论】:

【解决方案2】:

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

【讨论】:

  • 那我如何获取 fs 并在我的 html5 中创建目录和内容?
  • 你没有。出于安全原因,大多数情况下不允许在浏览器中访问文件系统。
【解决方案3】:

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

<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 将您的客户端连接到它,或者实现 MVC 堆栈喜欢Sails.js

【讨论】:

  • 好的,我明白了。但是fs 我想创建目录。因此,如果我无法从 server.js 获得 fs。如何在 .html 中使用 ..for 例如:onInitFs(fs)
  • 完全不确定您在问什么?听起来对我来说是一个全新的问题;)
  • 很简单....看...我正在使用server.js创建fs,所以我想用这个fs创建一个目录并存储一些东西并用它来创建网页(设置建立服务器来存储/检索文件)。因此,如果我无法在我的 html 中访问 fs,我该如何使用它。我确信有一些方法可以做到这一点。
  • 你根本做不到。您需要构建一个后端 API 服务来处理它。
  • 好的。你有任何演示示例吗?我没有找到一段代码来做到这一点。我搜索并仍在搜索它。
猜你喜欢
  • 2016-04-05
  • 2017-09-04
  • 2017-04-27
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
  • 2012-05-11
相关资源
最近更新 更多