Requirejs 加载的脚本不会出现在全局上下文中

Requirejs 加载的脚本不会出现在全局上下文中,requirejs,aurelia,Requirejs,Aurelia,我正在尝试在我的一个模型中加载脚本: attached(){ $.ajax({ type: 'GET', url: '/lib/zxcvbn/dist/zxcvbn.js', dataType: 'script', cache: true }).done(function(script, textStatus) { console.log('loaded script'); }); } 点击done回调,但是导出zxcvn在全局上下文中不可用 在普通html页面(即非aur

我正在尝试在我的一个模型中加载脚本:

attached(){
$.ajax({
  type: 'GET',
  url: '/lib/zxcvbn/dist/zxcvbn.js',
  dataType: 'script',
  cache: true
}).done(function(script, textStatus) {
  console.log('loaded script');
});
}

点击
done
回调,但是导出
zxcvn
在全局上下文中不可用

在普通html页面(即非aurelia)中运行完全相同的代码可以正常工作(ZxCVN在全局上下文中可用)

我知道这不是在aurelia中加载外部JS文件的推荐方法,但是脚本非常大,在我的应用程序中只需要一个位置。 州政府的文件:

ZXCVN检测并支持CommonJS(节点、浏览器化)和AMD(RequireJS)。如果没有这些函数,它会将单个函数zxcvbn()添加到全局命名空间中


我的aurelia应用程序正在使用RequireJS;如果它没有加载到全局名称空间中,加载在哪里?我如何引用它?

根据您提供的信息,
zxcvbn
检测到存在AMD加载程序(RequireJS),并调用
define
将自身注册为AMD模块

由于页面上已经有RequireJS,您可以用调用
require
替换jQuery调用,并传递完整路径:

require(['/lib/zxcvbn/dist/zxcvbn.js'], function (zxcvbn) {
  // Do something with zxcvbn ...
});
由于脚本本身注册为AMD模块,因此参数
zxcvbn
将保存模块的值

请注意,当您传递以正斜杠开头的路径时,RequireJS会按原样使用路径:这会绕过您的RequireJS配置(例如,
baseUrl
path
map
不被应用,等等),并且RequireJS不会添加
.js
扩展,因此它需要有扩展名