【问题标题】:JavaScript: document.write() not working in Mac TerminalJavaScript:document.write() 在 Mac 终端中不起作用
【发布时间】:2012-12-18 11:38:11
【问题描述】:

我正在尝试从我从 Mac 终端(命令行)运行的一些服务器脚本中包含一些库。这不会在浏览器中运行 - 我正在为我的 iOS 应用程序的后端使用 Parse Cloud Code。任何想法为什么以下代码不起作用,而它在谷歌浏览器中起作用?

document.write('<script src="http://code.jquery.com/jquery-1.8.3.min.js" type="text/javascript"></script>');
document.write('<script src="https://raw.github.com/carlo/jquery-base64/master/ jquery.base64.min.js" type="text/javascript"></script>');
document.write('<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha1.js" type="text/javascript"></script>');

从终端运行会出现错误:{"code":141,"error":"Uncaught ReferenceError: document is not defined"}。

【问题讨论】:

  • 检查 javascript 是否在某处工作的拇指规则:做一个alert(1);
  • Parse Cloud Code 正在运行 node.js 或其他一些服务器端 JS(如 rhino)?
  • @nickd717 确保编辑您的问题以准确反映错误。
  • @SimonBoudrias - 不确定。这是文档,但我发现很难弄清楚它在基本层面上是如何工作的:parse.com/docs/cloud_code_guide#started.

标签: javascript parsing serverside-javascript


【解决方案1】:

在服务器端 Javascript 中通常没有 document。这是因为没有创建 DOM,这就是您收到该错误 (Uncaught ReferenceError: document is not defined) 的原因。

另外,通常script 标签不会用于加载 javascript 文件(没有 DOM)。

Node.js 使用模块接口使用require 来请求模块(这也意味着模块不会在全局空间中使用;例如,浏览器中的window,Node.js 中的process)。不幸的是,很多客户端 javascript 库无法在服务器端运行(jQuery 就是这种情况,因为它用于操作服务器端不存在的 DOM)。

然而,在节点中,cheerio 基本上在服务器上实现了 jQuery 语法来生成 DOM 字符串。但在你的情况下,我宁愿寻找在你的环境中工作的特定库。

Enaway,在您稍微澄清一下您的问题之后。我认为您对为什么会收到 document not defined 错误有一个答案(您没有在浏览器中工作,因此您没有 DOM)。从那里开始,您真的需要阅读 Cloud Code Guide 文档并了解他们的环境是如何工作的;但绝对不是因为它说它使用 javascript,你可以将你在浏览器上的工作方式转换到服务器上。

祝你好运。

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 2015-10-23
    • 2013-09-25
    • 1970-01-01
    • 2022-11-13
    • 2013-11-14
    • 2020-12-16
    • 2012-04-30
    • 1970-01-01
    相关资源
    最近更新 更多