node.js check if a remote URL exists

前端 未结 11 782
萌比男神i
萌比男神i 2021-02-05 04:28

How do I check to see if a URL exists without pulling it down? I use the following code, but it downloads the whole file. I just need to check that it exists.

ap         


        
11条回答
  •  你的背包
    2021-02-05 04:40

    2020 update

    request has now been deprecated which has brought down url-exists with it. Use url-exist instead.

    const urlExist = require("url-exist");
    
    (async () => {
        const exists = await urlExist("https://google.com");
        // Handle result
        console.log(exists)
    })();
    

    If you (for some reason) need to use it synchronously, you can use url-exist-sync.

    2019 update

    Since 2017, request and callback-style functions (from url-exists) have fallen out of use.

    However, there is a fix. Swap url-exists for url-exist.

    So instead of using:

    const urlExists = require("url-exists")
    
    urlExists("https://google.com", (_, exists) => {
        // Handle result
        console.log(exists)
    })
    

    Use this:

    const urlExist = require("url-exist");
    
    (async () => {
        const exists = await urlExist("https://google.com");
        // Handle result
        console.log(exists)
    })();
    

    Original answer (2017)

    If you have access to the request package, you can try this:

    const request = require("request")
    const urlExists = url => new Promise((resolve, reject) => request.head(url).on("response", res => resolve(res.statusCode.toString()[0] === "2")))
    urlExists("https://google.com").then(exists => console.log(exists)) // true
    

    Most of this logic is already provided by url-exists.

提交回复
热议问题