代码之家  ›  专栏  ›  技术社区  ›  Floffah

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

  •  -1
  • Floffah  · 技术社区  · 7 年前

    因此,我试图制作一个更新检查器,它实际上并没有下载更新,而是nvm,我所要做的就是检查软件包上的版本是否正确。github上的json与应用程序中的json相同(我用electron制作)

    通过这段代码,我得到了一个“路径必须是字符串错误”(这是一幅图像 https://gyazo.com/7b55a1cbe96b2719bb588a6591855839 )

    此外,我确实查找了很多次,事实上,我找到了获取包的代码。来自github和http模块的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 回复  |  直到 7 年前
        1
  •  0
  •   Monte Roden    7 年前

    这将发出您想要的请求:

    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 当它不是的时候,作为一个承诺。不过,它可以通过加入像bluebird这样的模块来实现。您使用http模块发出https请求。您没有提供http。正确获取其参数,即语法不正确。如果要在服务器端代码上更新DOM,则应将客户端和服务器逻辑分开。 res => res.json() 不会更改 res 对于json,您需要 JSON.parse .