【问题标题】:How to pass a JavaScript variable to node.js如何将 JavaScript 变量传递给 node.js
【发布时间】:2019-05-15 21:02:07
【问题描述】:

我正在尝试使用一些 js 变量将它们保存在 .log 文件中,我正在尝试将这些变量传递给另一个将数据保存在 .log 文件中的文件,但出现下一个错误:

Uncaught ReferenceError: require is not defined

我的html是下一个:

<!DOCTYPE html>
<html lang="">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/bootstrap.css">
    <link rel="stylesheet" href="style.css">
    <script src="https://d3js.org/d3.v3.min.js" charset="utf-8"></script>
    <script src="java.js"></script>
    <title></title>
</head>

<body onload="draw();">

    <!-- JS dependencies -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <!-- Bootstrap 4 dependency -->
    <script src="https://unpkg.com/popper.js@1.15.0/dist/umd/popper.min.js"></script>
    <script src="js/bootstrap.min.js"></script>

    <!-- bootbox code -->
    <script src="bootbox/bootbox.js"></script>
    <script src="bootbox/bootbox.locales.js"></script>

    <div class="container">
        <div class="row">
            <div id="Prueba" class="col-4 d-flex justify-content-center">
                <h1></h1>
                <!--<button type="button" class="btn btn-info">Info</button>-->
            </div>
            <div class="col-4 d-flex justify-content-center">
                <div class="col">
                    <div id="chart"></div>
                </div>
            </div>
            <div class="col-4 d-flex justify-content-center">
                <!--<button type="button" class="btn btn-info">Info</button>-->
            </div>
        </div>
    </div>
</body>

</html>

我所做的是展示我在那里制作的游戏,然后我创建了一些带有输入的模式来获取一些数据(我正在使用 bootbox.js),我将其保存在一个变量中,然后我想将它发送到另一个 . js 将数据保存在 .log 文件中,所以我有一个使用 le html 加载的函数,在该函数中我创建游戏和模态,我在加载页面时打开第一个模态

    modal1();

    function modal2() {
        var data = require('./save');
        bootbox.prompt({
            closeButton: false,
            title: "Código postal",
            size: "medium",
            inputType: "number",
            callback: function (result) {
                num = number(result);
                if (num != true || result.length < 5) {
                    modal2();
                } else {
                  data.save_cp(result);
                    bootbox.alert({
                        size: "small",
                        title: "Correcto",
                        message: ":O",
                        callback: function () {
                            /* your callback code */
                        }
                    });
                }
            }
        });
    }

    function modal1() {
        var data = require('./save');
        bootbox.prompt({
            closeButton: false,
            title: "Correo empresarial",
            size: "medium",
            //onScape: function(){},
            callback: function (result) {
                correo = email(result);
                empresarial = ce(result);
                if (correo != true || empresarial == true) {
                    modal1();
                } else {
                    data.save_c(result);
                    modal2();
                }
            }
        });
    }

并且错误说没有定义require,我猜那是因为我需要节点,所以我的问题是如何在不运行节点的情况下解决这个问题?或者有另一种方法可以将它保存在日志中或txt文件,无需下载文件,只需打开并添加数据即可。

【问题讨论】:

  • 出于安全考虑,您无法在浏览器中使用 javascript 访问文件系统。您必须在服务器端使用节点或您想要的任何其他方式执行此操作。但是尝试找到另一种解决方案,您正在尝试的方法是不允许的。

标签: javascript node.js browserify bootbox


【解决方案1】:

无法以稳定的方式从浏览器访问文件系统。

如果你真的想使用文件,你可以尝试使用FileSystem API the Google Chrome provides。但是请注意,只有 Google Chrome 使用该 API。此外,该 API 有一个 webkit 前缀,因此如果它变得稳定,它可能会发生变化。

此外,您还可以通过Electron JS 制作您的游戏。 Electron JS 通过 NodeJS API 公开文件系统,因此您的代码不会更改。但是,这不是网站,而是可以从网站分发的桌面应用程序。

除此之外,下载技巧将是从浏览器访问文件的唯一方法。

编辑: 我之前尝试过在文件系统api上使用browserify,但这不起作用。 Node 提供的文件系统 API 仅限于 Node。

附: 看起来你真的很想使用一些真正特定于服务器的功能。我建议留下日志并通过电子邮件发送到服务器。您可以尝试 Heroku 或 Firebase 以获得良好的免费层级服务。

【讨论】:

    猜你喜欢
    • 2019-07-07
    • 2020-01-11
    • 2017-04-29
    • 2011-04-09
    • 2011-09-27
    • 2019-03-01
    相关资源
    最近更新 更多