Javascript 在Modernizer/yepnope.js加载中使用Drupal.settings.basePath

Javascript 在Modernizer/yepnope.js加载中使用Drupal.settings.basePath,javascript,drupal-7,modernizr,yepnope,Javascript,Drupal 7,Modernizr,Yepnope,我目前正在Acquia上开始开发drupal站点。使用git并在本地工作对我来说是一个新的工作流。当在本地构建并尝试利用Modernizer load/yepnope时,我的script.JS文件中的我的JS通常如下所示 Modernizr.load([ { test: Modernizr.mq('only all'), nope: '/sitename/docroot/sites/all/themes/theme/js/libs/polyfill.js' },

我目前正在Acquia上开始开发drupal站点。使用git并在本地工作对我来说是一个新的工作流。当在本地构建并尝试利用Modernizer load/yepnope时,我的script.JS文件中的我的JS通常如下所示

Modernizr.load([
    {
    test: Modernizr.mq('only all'),
    nope: '/sitename/docroot/sites/all/themes/theme/js/libs/polyfill.js'
    },
    ....
所以这在我的机器上本地工作,但是当我提交我的更改并将其推送到acquia开发服务器时,加载脚本的文件路径是不正确的,因为我猜它的设置不一样

它需要在下面,URL中没有mysite/docroot

这就引出了Drupal.settings.basePath。如果我打印出来,它会在我的本地设置中显示/mysite/docroot/。如果我在dev服务器上这样做,它将打印出不同的内容(可能只是/)

所以我作为一个业余爱好者认为我可以做这样的事情。。(请原谅这个可怜的样品,我知道它可以做得更好)

这当然行不通。仅返回未定义的查询1

因此,我确信我的许多努力都有缺陷。。因此,如果有人能给我一些建议,无论是与工作流相关的,还是如何修复我的设置/代码,那就太好了


谢谢

也许我只是在使用Acquia时使用了不同的本地设置,但是为什么不使用相对路径,比如/sites/all/themes/theme/js/libs/polyfill.js?

虽然有点晚了,但它可能会有所帮助:

尝试以下方法:

var jsFolderPath = window.location.protocol + "//" + window.location.host+ Drupal.settings.basePath + 'sites/all/themes/theme/js/libs/';

nope: jsFolderPath + 'polyfill.js'

然后,您可以轻松地为每个yesnope添加polyfills,无论是在dev server还是在locahost中。

您可以注销Drupal.settings.basePath并让我们知道它包含什么吗?在我的本地计算机上,它显示“/sitename/docroot/”,这是正确的。在推送后的dev服务器上,如预期的那样显示“/”。我只需要把这个路径放到nope中:'path/to/polyfill.js'Hi,您需要显示更多代码(或实例)才能获得帮助。您刚才显示的代码似乎是正确的,因此问题可能来自其他地方。全局
Drupal
是否在脚本标记之前声明?
var jsFolderPath = window.location.protocol + "//" + window.location.host+ Drupal.settings.basePath + 'sites/all/themes/theme/js/libs/';

nope: jsFolderPath + 'polyfill.js'