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

时间:2018-02-28 20:56:01

标签: javascript node.js electron

所以我试图制作一个更新检查器,实际上没有下载更新,但是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!'
    }
});

}

1 个答案:

答案 0 :(得分:0)

这将提出您想要的请求:

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