路径必须是一个字符串(需要带有node.js http模块的url)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了路径必须是一个字符串(需要带有node.js http模块的url)相关的知识,希望对你有一定的参考价值。

因此,我试图制作一个更新检查器,但实际上没有下载更新,但是nvm和所有我试图检查github上的package.json上的版本是否与应用程序中的版本相同(我在电子中制作它)

并使用此代码我得到一个“路径必须是字符串错误”(继承人图像https://gyazo.com/7b55a1cbe96b2719bb588a6591855839

我也查了很多次,实际上从github获取带有http模块的package.json的代码来自how to require from URL in Node.js

function checkforupdate() {

var http = require('http')

const file_url = "https://raw.githubusercontent.com/FloffahDevelopments/FloffahsHub/master/package.json";
const oldpackagejson = require("package.json");
document.getElementById("checkupdate").innerhtml = 'Checking for updates</br>Please wait</br><img src="./assets/icons/gif/loading.gif" alt="loading" style="width: 10%; left: 45%;">'
http.get(file_url).then(res => res.json()).then(pack => {
    if (pack.version !== oldpackagejson.version) {
        document.getElementById("checkupdate").innerHTML = 'Update available!'
    } else {
        document.getElementById("checkupdate").innerHTML = 'No update available!'
    }
});

}

答案

这将提出您想要的请求:

var https = require('https')
const file_url = "https://raw.githubusercontent.com/FloffahDevelopments/FloffahsHub/master/package.json"
const oldpackagejson = require("./package.json");
https.get(file_url, (res) => {
  res.on('data', (d) => {
    process.stdout.write(d)
  })
}).on('error', (e) => {
    console.log(e)
})

你犯的一些错误是:将http.get视为承诺而不是。但是,它可以包含像蓝鸟这样的模块。您使用http模块发出https请求。您没有正确地给出http.get它的参数,也就是说,您的语法不正确。您正在尝试更新服务器端代码上的DOM,您应该将客户端和服务器逻辑分开。 res => res.json()不会将res改为json,你需要JSON.parse

以上是关于路径必须是一个字符串(需要带有node.js http模块的url)的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS

带有查询字符串参数的node.js http'get'请求

如何在 Node.js 中将字符串转换为字节数组?

深入浅出Node.js

Node.js中的URL

初识 Node.js 丨path 路径模块