javascript - 尽管脚本已下载,但 requirejs 根本不注入(inject)任何内容

标签 javascript requirejs

无论我在 shell.js 中注入(inject)什么对象,我都无法访问它。

它是从服务器下载的,我在服务器或控制台输出中没有收到任何错误。

当我在控制台中输入“mainViewModel”时,我得到:

ReferenceError: mainViewModel is not defined
get stack: function () { [native code] }
message: "mainViewModel is not defined"
set stack: function () { [native code] }
__proto__: Error

应用程序.js:

require(['shell'], function(Shell) {
        var shell = new Shell();
});

shell.js:

define(['viewmodel/mainViewModel'], function (mainViewModel) {
    return function () {
        // When I am here the mainViewModel does not exist/undefined
    };
});

MainViewModel.js:

define([], function() {
    return function() {

    };
})

最佳答案

当需要 js 拉取的文件中存在脚本错误时,有时会返回 null,我确信我以前见过这种情况发生在我身上,而且结果总是缺少 } 或 ;或类似的东西(我注意到在 MainViewModel 的末尾缺少 ; 但它就在最后,所以我不会严重怀疑它,我不知道这些文件中是否有任何额外的代码?或者它们真的是空白的)。

还有斯坦尼斯拉夫提到的关于缓存的问题 - 因为如果它被缓存并且你修复它,那么它只会重新发送缓存的损坏文件(在开发时不断清除缓存可能是一个好习惯,哈哈)。实际上 urlArgs 可能也应该与生产中的版本号一起使用,用户在升级后不会一致地清除缓存......

返回函数一切都很好,但是如果您创建一个变量,将函数分配给它,然后返回该变量,如果您可以在其中设置断点,则可以更轻松地调试正在下拉的实际文件并在刷新后记住。 然后,如果代码甚至命中该文件或者对象生成出现错误(我怀疑),您就可以看到正在返回的对象

有点旧了......我确信你现在要么已经解决了你的问题,要么已经沮丧地放弃了 require js :)

关于javascript - 尽管脚本已下载,但 requirejs 根本不注入(inject)任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17694660/

相关文章:

javascript - 在 react 类上设置 Prop

javascript - Require & Backbone 中的变量函数名称

backbone.js - 有没有办法使用 RequireJS 动态更改 Marionette ItemView 模板?

continuous-integration - Jenkins RequireJs Build/CI

javascript - requirejs 并在模块中加载多个库

javascript - 如何使谷歌饼图api背景透明

javascript - 使用循环一次为一个项目设置动画

javascript - element.sortable 不是一个函数 Angular

javascript - TypedJs批量打字效果不起作用

javascript - RequireJS - 在同一文件中调用函数