【问题标题】:TypeScript | Jquery cant be imported打字稿 | jquery无法导入
【发布时间】:2021-11-11 16:26:04
【问题描述】:

我是 TypeScript 的新手,我需要你们的帮助。 我正在尝试使用 typescript 构建一个执行 api 调用的模块 我后来添加到我的主要项目中。所以我先做 使用 ajax 获取请求。但我得到了这个:

(node:1588) UnhandledPromiseRejectionWarning: TypeError: $.ajax is not a function

这是我的打字稿文件:

import * as $ from 'jquery'

class RedditJuice {

    afterbeforeStorage:Array<string>;
    totalPage:number
    currentPage:number


    constructor() {
        this.afterbeforeStorage = []
        this.totalPage = 0
        this.currentPage = 0


    }
    fetchRedditFeed = async (afterTag:string, beforeTag:string) => {
        return new Promise<JSON>((resolve, reject) => {
            console.log("yey")
            if(afterTag == null || undefined || "" && beforeTag == null || undefined || ""){
                var url:string = "https://reddit.com/.json"
            }
            else if(beforeTag != null|| undefined || ""){
                var url:string = "https://reddit.com/.json?after=" + afterTag
            }
            else {
                var url:string = "https://reddit.com/.json?after=" + afterTag + "?before=" + beforeTag
            }
            $.ajax({
                url: url,
                type: "GET",
                success: function(getData){
                    console.log(getData.data)
                    resolve(getData.data) 
                },
                error: function(err){
                    reject(err)
                }
            })
        })
    }


    fetchPostComments = async (permalink:string) => {
        return new Promise<JSON>((resolve, reject) => {
            var comment_fetch_url = "https://reddit.com" + permalink + '.json?limit=10'
            $.ajax({
                type: "GET",
                url: comment_fetch_url,
                success: function(data) {
                    resolve(data[1].data)
                },
                error: function(err){
                    reject(err)
                }  
            })
        })
    }
}

const rApi = new RedditJuice() 

console.log(rApi.fetchRedditFeed("", ""))

在文件的底部,我尝试使用该类,但随后出现上述错误... 是的,我正在运行由 tsc 编译的 .js 文件。 我还用 npm (@types/jquery) 安装了 jQuery

感谢您的支持^____^

【问题讨论】:

    标签: javascript node.js typescript npm


    【解决方案1】:

    您是在浏览器中还是在 nodejs vm 中作为测试或直接执行此操作? jquery 使用浏览器环境提供的 XMLHttpRequest 来实现它的 ajax 功能,当它不可用时它就无法工作。

    【讨论】:

    • 是的,我在浏览器外部的本地节点 js 实例上运行它。嗯,我无处看到这个问题。一个小苏。 k 所以我可能会使用 axios。谢谢顺便说一句:)
    • 使用 nodejs 的一个棘手的部分是许多现有的依赖项对 nodejs api 或浏览器提供的 api 都有隐式依赖,因为只有调用者的经验才能告诉你哪个可能工作或可能不工作。在过去,babel 会为其中一些提供 pollyfills,但这已经失宠,因为它造成了混乱的不确定性。 jQuery 是一个被实现为仅在浏览器环境中执行的库,只是为了方便与 npm 使用集成而将其放入 npm 中。
    猜你喜欢
    • 2021-02-03
    • 1970-01-01
    • 2018-04-26
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 2018-08-15
    • 2017-02-28
    相关资源
    最近更新 更多