Javascript Requirejs为库中的资产使用了错误的路径
在我创建的网站中,它被用作模块加载器。这个网站上有一个“3d照片查看器”,我正在使用。此库的一个依赖项是。这在库代码中是必需的:Javascript Requirejs为库中的资产使用了错误的路径,javascript,requirejs,Javascript,Requirejs,在我创建的网站中,它被用作模块加载器。这个网站上有一个“3d照片查看器”,我正在使用。此库的一个依赖项是。这在库代码中是必需的: ... define(["three","D.js","uevent","doT"],b) ... 在我的RequireJS配置中,我为Photo Sphere Viewer库所需的libs定义了一个baseUrl和paths: requirejs.config({ baseUrl: '/scripts', paths: { 'vendor':
... define(["three","D.js","uevent","doT"],b) ...
在我的RequireJS配置中,我为Photo Sphere Viewer库所需的libs定义了一个baseUrl
和path
s:
requirejs.config({
baseUrl: '/scripts',
paths: {
'vendor': 'lib/vendor',
'three': 'lib/vendor/three',
'uevent': 'lib/vendor/uEvent',
'doT': 'lib/vendor/dOT',
'D.js': 'lib/vendor/D'
}
});
用户请求获取3d照片后,网站需要使用照片球体查看器。代码的工作原理有点像这样:
requirejs(['main', 'deps', 'for', 'app'], function(a, b, c, d){
var showSphere = function(){
// loading logic and such
require('vendor/photos-sphere-viewer', function(PSV){
// do your 3d photo thing
});
};
var button = document.getElementById('button');
button.addEventListener('click', showSphere);
});
D.js
位于/scripts/lib/vendor/D.js
。然而,当我测试这个时,我得到了一个404的/D.js
。就好像它完全忽略了baseUrl
和path
,但是其他库不会忽略它们一样,它们会正常加载
我已将
console.log(require.urlTo('D.js'))
添加到Photo Sphere Viewer js文件的顶部,并以某种方式记录了正确的路径:“/scripts/lib/vendor/D.js”
。然而,当实际需要D.js
时,它似乎“改变了主意”。我已经为此工作了一段时间,但没有结果,我正在考虑将D.js
放在网站根目录中,但这当然不是我的首选解决方案。我怀疑您的问题是因为异步加载requireJs依赖项。
由于requireJs异步加载依赖项,因此当您尝试使用D.js文件时,可能尚未加载该文件。
如果这就是问题所在,解决方案是在require.js之前将依赖项加载到单独的文件中
<script type="text/javascript" src="/js/config.js"></script>
<script type="text/javascript" src="/js/require.js"></script>
看
而且我认为.js正在抛开一些东西。 更改配置
requirejs.config({
baseUrl: '/scripts',
paths: {
'vendor': 'lib/vendor',
'three': 'lib/vendor/three',
'uevent': 'lib/vendor/uEvent',
'doT': 'lib/vendor/dOT',
'D_js': 'lib/vendor/D'
}
});
并以这种方式调用定义
define(["three","D_js","uevent","doT"],b) ...
我非常怀疑这是问题所在,因为错误不是
D
是未定义的
(或类似),而是无法下载实际的.js文件。也可以在require('vendor/photos-sphere-viewer',function(PSV){/*您的3d照片对象*/})中进行编码代码>不会被触发,因此没有使用D.js
lib的代码正在运行。正如我在问题中提出的,将文件移动到/D.js
可以修复它,但这并不是我想要做的。这为我修复了它。我必须更改配置文件中的名称,photosphereviewer
js文件,并更改D.js
中的定义以使其正常工作。