Java Script - экспорт и импорт - PullRequest
0 голосов
/ 07 июня 2018

Я разрабатываю инструмент оценки недостающей части Java-скрипта для надстройки Excel.Для этого сначала я разработал класс Part.js в Microsoft Visual Studio 2015:

export class Part {
    function Part(number) {

        if (this instanceof Part) {
            this.number = number;
        } else {
            return new Person(firstName)
        }

    }

}; 

module.exports = Part;

Кроме того, я написал класс MissingPartSummary .js

(function () {
    "use strict";

    import * as Part from 'Part';

    Office.initialize = function (reason) {
        $(document).ready(function () {
            //app.initialize();

            $('#create-difference-maps').click(createDifferenceMaps)
        });
    };

    function createDifferenceMaps() {
        Excel.run(function (context) {
            var part = new Part("N1022181");

            var dataSheet = context.workbook.worksheets.getActiveWorksheet();
            //dataSheet.getRange("A1:C3").values = 7;

            var rangeAddress = "F11 : J12";
            var range = dataSheet.getRange(rangeAddress);
            //range.load('cellCount');
            range.load('values');

            return context.sync().then(function () {
                //console.log("Number of cells: " + range.cellCount);
                console.log("Text: " + range.values);
            });

            context.sync();
        }).catch(function (error) {
            console.log("Error: " + error);
            if (error instanceof OfficeExtension.Error) {
                console.debug("Debug info:" + JSON.stringify(error.debugInfo));
            }
        });
    }

    })();

К сожалению, если я попытаюсьвыполняя этот код, MS Visual Studio сообщает, что в строке 4 есть синтаксическая ошибка. Не удается выполнить импорт детали.Зачем?Оба файла Part.js и MissingPartSummary.js находятся в одной папке ../App/Home/

При попытке запустить проект Visual Studio появляется сообщение об ошибке от Visual Studio:

Ответы [ 2 ]

0 голосов
/ 13 июля 2018

Я уже решил проблему сам.Дело в том, что в Javascript существует два типа «текст / javascript» и «модуль».Поскольку я определил type = "text / javascript" в MissingPartSummary.html, это привело к ошибке импорта.Если я изменю тип на модуль, ошибки не будет.Но будут проблемы в других местах.Поэтому я решил в пользу текста / Javascript, а не модуля.После этого я изменил Part.js.

var p = p || {};

p.Part = function (row) {
    this.bestellstatus = row[0];
    this.bezeichnung = row[1];
    this.teilenummer = row[2];
    this.teilenummer = this.teilenummer.concat(row[3]);
    this.teilenummer = this.teilenummer.concat(row[4]);
    this.teilenummer = this.teilenummer.concat(row[5]);
    this.teilenummer = this.teilenummer.concat(row[6]);
    this.prozesssteurer = row[19];
    this.bemerkung = row[22];
};

p.Part.prototype = (function () {

    var _isValid = function () {
        var valid = false;

        if (typeof this.bestellstatus == 'string') {
            valid = (this.bestellstatus != "Info");
        }

        if (typeof this.teilenummer == 'string') {
            valid = valid & (this.teilenummer != "");
        }

        return valid
    };


    return {
        isValid: _isValid
    }; 

}()); 

. На следующем шаге я написал

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

в MissingPartSummary.html.Таким образом, я могу использовать Part.js в MissingPartSummary.js следующим образом.

var rangeAddressA = "D8 : Z30";
var rangeA = dataSheet.getRange(rangeAddressA);
rangeA.load(['values', 'text', 'rowCount', 'columnCount']);

return context.sync().then(function () {
    var text = rangeA.text;
    var numOrRows = rangeA.rowCount;

    for (var i = 1; i < numOfRows; i++) {
            var part = new p.Part(text[i]);
    }
 });
0 голосов
/ 07 июня 2018

Поскольку вы используете модули ES6 (export class Part и import * as Part from 'Part';), вам не нужно указывать экспорт модуля в Part.js.Поэтому вам не нужна последняя строка, module.exports = Part;.

Кроме того, в MissingPartSumary.js вам необходимо указать относительный путь к Part.js в вашем операторе импорта.Вместо import * as Part from 'Part'; это должно быть import * as Part from './Part.js';.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...