Javascript ReactJS-如何设置窗口的属性?

Javascript ReactJS-如何设置窗口的属性?,javascript,reactjs,webpack,ecmascript-6,Javascript,Reactjs,Webpack,Ecmascript 6,我遇到了一个不熟悉的场景。在我的React项目中,我导入了一个第三方供应商api文件。但是,供应商api使用未包含的Q promise库进行内部调用。api需要设置window.Q,它是api的直接依赖项。我似乎不知道如何在窗口上正确设置,以便在导入源文件顶部的供应商文件并使用它时,它不会抛出以下错误: TypeError:undefined不是对象(计算“$q.defer”) global-variables.js: 注意:我在这个文件中导入了供应商库,因为ds是在文件中创建的一个全局变量,供

我遇到了一个不熟悉的场景。在我的React项目中,我导入了一个第三方供应商api文件。但是,供应商api使用未包含的Q promise库进行内部调用。api需要设置
window.Q
,它是api的直接依赖项。我似乎不知道如何在窗口上正确设置,以便在导入源文件顶部的供应商文件并使用它时,它不会抛出以下错误:

TypeError:undefined不是对象(计算“$q.defer”)

global-variables.js:

注意:我在这个文件中导入了供应商库,因为
ds
是在文件中创建的一个全局变量,供消费者调用

import '../../vendor/vendor-library';

const globals = {
    DATA_SERVICE: ds,
};

export default globals;
user.js:

import globals from '../globals/global-variables';

const userApi = {
    getCurrentUser() {
        return globals.DATA_SERVICE.getDataForCurrentObject('User', 'ID');
    },
};

export default userApi;
我尝试在我的项目入口点顶部执行此操作,但没有解决问题:

index.js:

import q from 'q';
window.Q = q;

任何帮助都将不胜感激。

我建议您使用
webpack
提供的扩展或您正在使用的任何其他捆绑程序来捆绑您的javascript,以提供Q作为全局

在webpack中,可以使用
webpack.ProvidePlugin

例如:

module.exports = {
    module : {
       ...
    },
    plugins : [
        new webpack.ProvidePlugin({
            Q: "q",
            "window.Q": "q",
        }),
   ],
};

在本例中,
“q”
是的名称,您必须将其作为依赖项添加到项目中

听起来像是一个相当糟糕的图书馆。除非有必要,我可能会重新评估是否有更好的东西。您的应用程序的安全性仅与您最不安全的依赖项相同…FWIW,如果您仍然需要使用它,您可能可以在以下帖子中执行类似操作:嘿,Slider,我正在查看您的代码,如果您能向我提供有关您正在使用的供应商api的更多信息,这将非常有用。奇怪的是,看到“Q”以他们“要求”的方式使用;一般来说,我熟悉的“q”是npm模块。存在于package.json.中的模块无法清楚地理解。也许你需要?谢谢你的建议,我明天再看。如果您不介意,以下是指向供应商API的链接:。这是文件:@MattFernandez若你们看一下,你们会发现他们希望window.Q已经定义好了。我在一个普通的应用程序中进行了测试,只是将Q库放在一个脚本标记中,然后将这个供应商api文件放在html中的一个脚本标记中。我确认这能让它工作。现在在React应用程序中尝试这样做,效果非常好。谢谢