Javascript 有没有办法检测AMD装载机中的404错误?

Javascript 有没有办法检测AMD装载机中的404错误?,javascript,error-handling,curl.js,Javascript,Error Handling,Curl.js,我正在开发一个类似框架的结构,它使用curl.js作为脚本加载程序。模块可以位于应用程序或核心目录中,这使我可以从应用程序轻松覆盖核心模块。我有一个服务器端脚本来搜索这些目录并返回第一个找到的文件,但后来我决定客户端应该能够在没有来自后端的任何帮助的情况下工作,所以现在我有了一个函数,可以尝试列出的目录,直到其中一个有文件为止 过了一会儿,我意识到我没有任何方法来区分404错误和语法错误。如果代码中存在实际错误,我希望加载程序失败,但在404的情况下,它应该只查找下一个文件,如果找不到文件,则最

我正在开发一个类似框架的结构,它使用curl.js作为脚本加载程序。模块可以位于应用程序或核心目录中,这使我可以从应用程序轻松覆盖核心模块。我有一个服务器端脚本来搜索这些目录并返回第一个找到的文件,但后来我决定客户端应该能够在没有来自后端的任何帮助的情况下工作,所以现在我有了一个函数,可以尝试列出的目录,直到其中一个有文件为止

过了一会儿,我意识到我没有任何方法来区分404错误和语法错误。如果代码中存在实际错误,我希望加载程序失败,但在404的情况下,它应该只查找下一个文件,如果找不到文件,则最终失败


因此,是否有可能检测到脚本(在curl.js、AMD或通常在js中)是否由于404而不是由于加载的代码中的错误而失败?

出于安全考虑,当脚本失败时,浏览器不会提供太多信息。事实上,IE甚至拒绝调用“加载”事件。AMD加载程序唯一的信息是是否调用了
define()

如果将自己的全局函数调用放在脚本文件的开头,可能有一种方法可以检测某些类型的脚本错误。您可以检查该函数是否已被调用。您无法检测阻止脚本解析的语法错误,但可以检测其他类型的错误


可以将准确的错误返回给errback函数(
curl([])。然后在执行工厂函数时发生错误时返回(callback,errback)
)。你验证过这是否有效吗?

我最终制作了一个基于php的小型加载程序。在模块ID中包含get参数,您认为这是不好的做法吗?我必须在模块id中包含搜索路径(如
require(['fooModule?search=appModules,coreModules'])
)。这些模块总是通过框架加载的,所以我可以肯定地说,查询字符串是一致的,并且不会出现拼写错误。这听起来是一个合理的折衷方案,不需要做很多工作。很高兴你找到了解决办法。