Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 期待';ID'';字符串'';编号'';布尔值'';未定义'';空'';数据';,得到';无效';_Javascript_Handlebars.js_Express Handlebars - Fatal编程技术网

Javascript 期待';ID'';字符串'';编号'';布尔值'';未定义'';空'';数据';,得到';无效';

Javascript 期待';ID'';字符串'';编号'';布尔值'';未定义'';空'';数据';,得到';无效';,javascript,handlebars.js,express-handlebars,Javascript,Handlebars.js,Express Handlebars,我想获取github帐户的星星总数,但当我运行服务器客户端时,会出现一个错误,显示: 。。。数据增量=“{metadata[stargazers_ -----------------------^ 应为“ID”、“STRING”、“NUMBER”、“BOOLEAN”、“UNDEFINED”、“NULL”、“DATA”,得到的是“INVALID” 我使用了express server,带有用于渲染的手柄 function parseData(response, user) { var ch

我想获取github帐户的星星总数,但当我运行服务器客户端时,会出现一个错误,显示:

。。。数据增量=“{metadata[stargazers_ -----------------------^ 应为“ID”、“STRING”、“NUMBER”、“BOOLEAN”、“UNDEFINED”、“NULL”、“DATA”,得到的是“INVALID”

我使用了express server,带有用于渲染的手柄

function parseData(response, user) {
    var checkLang = {};
    const metadata = response.reduce(function(acc, currentItem) {
        acc.stargazers_count += currentItem.stargazers_count;
        if (checkLang[currentItem.language]) {
            checkLang[currentItem.language] = checkLang[currentItem.language] + 1;
        } else {
            checkLang[currentItem.language] = 1;
        }
        return acc;
    }, { stargazers_count: 0 });

    metadata["languages"] = Object.keys(checkLang).map(item => {
        return {
            value: (checkLang[item] / response.length) * 100,
            title: item
        };
    });

    metadata["mainlanguage"] = Object.keys(checkLang).reduce(function(a, b) {
        return checkLang[a] > checkLang[b] ? a : b;
    });

    return metadata;
}

route.get("/:id", function(req, res) {
    axios
        .get("https://api.github.com/users/" + req.params.id)
        .then(user => {
            axios
                .get("https://api.github.com/users/" + req.params.id + "/repos")
                .then(response => {
                    var getMetadata = parseData(response.data, user.data);

                    res.render("private", {
                        response: response.data,
                        user: user.data,
                        metadata: getMetadata
                    });
                })
                .catch((e) => {
                    console.log(e);
                    res.render("404");
                });
            })
            .catch((e) => {
                console.log(e);
                res.render("404");
            });
        });
});
结果。哈佛商学院

<div
    class="meta-value numscroller"
    data-max="{{ metadata.stargazers_count }}"
    data-min="0"
    data-delay="1"
    data-increment="{{ metadata[stargazers_count] / 10 > 0 ? metadata[stargazers_count] / 10 : 1 }}"
>
    {{ metadata.stargazers_count }}
</div>

{{metadata.stargazers\u count}

我希望它显示星星总数。

问题是由您的把手模板引起的。在属性
数据增量中,您使用的是
元数据[stargazers\u count]
,这导致了故障

请注意,不建议在把手模板中放置大量逻辑。因此,为了解决您的问题,我将计算
增量
值,并将其添加到
元数据
对象中,如下所示:

function parseData(response, user) {
    var checkLang = {};
    const metadata = response.reduce(function(acc, currentItem) {
        acc.stargazers_count += currentItem.stargazers_count;
        if (checkLang[currentItem.language]) {
            checkLang[currentItem.language] = checkLang[currentItem.language] + 1;
        } else {
            checkLang[currentItem.language] = 1;
        }
        return acc;
    }, { stargazers_count: 0 });

    metadata["languages"] = Object.keys(checkLang).map(item => {
        return {
            value: (checkLang[item] / response.length) * 100,
            title: item
        };
    });

    metadata["mainlanguage"] = Object.keys(checkLang).reduce(function(a, b) {
        return checkLang[a] > checkLang[b] ? a : b;
    });

    metadata.increment = metadata.stargazers_count / 10 > 0 ? metadata.stargazers_count / 10 : 1;

    return metadata;
}
我正在添加一个
increment
属性,该属性的值是您试图在把手模板中计算的值

现在,您的把手模板只需要使用以下属性:

<div
    class="meta-value numscroller"
    data-max="{{ metadata.stargazers_count }}"
    data-min="0"
    data-delay="1"
    data-increment="{{ metadata.increment }}"
>
    {{ metadata.stargazers_count }}
</div>

{{metadata.stargazers\u count}