Javascript Requirejs为库中的资产使用了错误的路径

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':

在我创建的网站中,它被用作模块加载器。这个网站上有一个“3d照片查看器”,我正在使用。此库的一个依赖项是。这在库代码中是必需的:

... 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
中的定义以使其正常工作。