Как передать переменную JavaScript в node.js - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь использовать некоторые переменные 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 не определен, я предполагаю, что это потому, что мне нужен узел, поэтому мой вопрос: как я могу решить эту проблему без запуска узла?, Или есть другой способ сохранить это в журнале или текстовый файл без загрузки файла, просто откройте его и добавьте данные.

1 Ответ

0 голосов
/ 16 мая 2019

Доступ к файловой системе из браузера невозможен в стабильном режиме.

Если вы действительно хотите использовать файлы, вы можете попробовать использовать FileSystem API, предоставляемый Google Chrome . Однако имейте в виду, что только Google Chrome использует этот API. Кроме того, этот API имеет префикс webkit, поэтому он может измениться, если станет стабильным.

Кроме того, вы могли бы сделать игру через Electron JS . Electron JS предоставляет файловую систему через API-интерфейсы NodeJS, поэтому ваш код не изменится. Однако это будет не веб-сайт, а настольное приложение, которое можно распространять с веб-сайта.

Кроме этого, уловка загрузки была бы единственным способом доступа к файлам из браузера.

EDIT: Я пытался использовать browserify на файловой системе apis раньше, но это не работает. API файловой системы, предоставляемый Node, ограничен Node.

P.S. Кажется, что вы действительно хотите использовать некоторые функции, которые действительно специфичны для конкретного сервера. Я бы порекомендовал оставлять логи и отправлять электронные письма на сервер. Вы можете попробовать Heroku или Firebase для получения бесплатного бесплатного сервиса.

...