requireJS,定义语句的来源
requireJS, origin of the define statement
我正在开发一个使用 Requirejs
进行依赖管理的大型项目,具体来说,每个文件的约定都具有这种模式:
define(['dependency1', 'dependency2'], function (dependency1, dependency2) {
... some code ...
});
现在我正在调查某个文件试图 require
不再存在的依赖项的故障。
我从 RequireJS
收到此错误:
GET https://some-location/some-file.js net::ERR_ABORTED
Uncaught Error: Script error for: some-file
http://requirejs.org/docs/errors.html#scripterror
at C (require.min.js:8)
at HTMLScriptElement.onScriptError (require.min.js:29)
at HTMLScriptElement.nrWrapper (...)
我怎么知道哪个文件包含错误的依赖项?
简单地搜索项目文件是不够的,因为它是一个跨越多个代码库的大型项目。
有没有办法让 RequireJS
告诉我是谁要求的?
您使用的 requirejs
是什么版本?我正在使用 2.3.2
,错误输出提供了更多信息,请查看:
GET http://localhost:9090/requirejs/js/dependency1.js net::ERR_ABORTED
require.js:168 Uncaught Error: Script error for "home/dependency1",needed by: home/somefile
http://requirejs.org/docs/errors.html#scripterror
at makeError (require.js:168)
at HTMLScriptElement.onScriptError (require.js:1735)
请注意,needed by: home/somefile
部分告诉我们文件是 requiring
失败的依赖项。这是我做的本地小测试
需要配置
require.config(
{
paths: {
'home': './js'
},
callback: function() {
require(['home/somefile'], function(a) {
console.log(a);
});
}
}
);
./js/somefile.js
define(['home/dependency1'], function (dependency1) {
console.log(dependency1);
});
因此,在得到错误 Uncaught Error: Script error for "home/dependency1",needed by: home/somefile
后,我们可以说文件 requiring
失败的依赖项是 PATH_TO_OUR_PROJECT/js/somefile.js
。记住我们需要注意我们在require
配置中的paths
您可以播放和测试 Global requirejs.onError function,但它不会为您提供比常规 requirejs
输出更多的信息。
Handling Errors 文档中的更多信息。
希望对你有帮助。
根据 Castro Roy 的回答,我进行了测试以验证这确实是 requireJS 版本的问题。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Require Test</title>
<script data-main="main" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.2/require.min.js"></script>
</head>
<body></body>
</html>
main.js
requirejs(['someFile'], function(someFile) {
console.log('main executing')
});
someFile.js
define(['someDependency'], function (someDependency) {
console.log('someFile executing')
});
和someDependency.js明显不见了。
结果:
使用 requireJs 2.1.20(在我的项目中使用)
GET http://localhost:63342/playground-simple/someDependency.js net::ERR_ABORTED
Uncaught Error: Script error for: someDependency
http://requirejs.org/docs/errors.html#scripterror
at makeError (require.min.js:1)
at HTMLScriptElement.onScriptError (require.min.js:1)
然后再次使用 requireJs 2.3.2
GET http://localhost:63342/playground-simple/someDependency.js net::ERR_ABORTED
Uncaught Error: Script error for "someDependency", needed by: someFile
http://requirejs.org/docs/errors.html#scripterror
at makeError (require.js:168)
at HTMLScriptElement.onScriptError (require.js:1735)
很清楚 是的。
这是版本问题,而不是我的项目的一些独特行为,此信息在更高版本的 require 的错误消息中给出。
遗憾的是我无法找到此更改的任何文档
我正在开发一个使用 Requirejs
进行依赖管理的大型项目,具体来说,每个文件的约定都具有这种模式:
define(['dependency1', 'dependency2'], function (dependency1, dependency2) {
... some code ...
});
现在我正在调查某个文件试图 require
不再存在的依赖项的故障。
我从 RequireJS
收到此错误:
GET https://some-location/some-file.js net::ERR_ABORTED
Uncaught Error: Script error for: some-file
http://requirejs.org/docs/errors.html#scripterror
at C (require.min.js:8)
at HTMLScriptElement.onScriptError (require.min.js:29)
at HTMLScriptElement.nrWrapper (...)
我怎么知道哪个文件包含错误的依赖项? 简单地搜索项目文件是不够的,因为它是一个跨越多个代码库的大型项目。
有没有办法让 RequireJS
告诉我是谁要求的?
您使用的 requirejs
是什么版本?我正在使用 2.3.2
,错误输出提供了更多信息,请查看:
GET http://localhost:9090/requirejs/js/dependency1.js net::ERR_ABORTED
require.js:168 Uncaught Error: Script error for "home/dependency1",needed by: home/somefile
http://requirejs.org/docs/errors.html#scripterror
at makeError (require.js:168)
at HTMLScriptElement.onScriptError (require.js:1735)
请注意,needed by: home/somefile
部分告诉我们文件是 requiring
失败的依赖项。这是我做的本地小测试
需要配置
require.config(
{
paths: {
'home': './js'
},
callback: function() {
require(['home/somefile'], function(a) {
console.log(a);
});
}
}
);
./js/somefile.js
define(['home/dependency1'], function (dependency1) {
console.log(dependency1);
});
因此,在得到错误 Uncaught Error: Script error for "home/dependency1",needed by: home/somefile
后,我们可以说文件 requiring
失败的依赖项是 PATH_TO_OUR_PROJECT/js/somefile.js
。记住我们需要注意我们在require
配置中的paths
您可以播放和测试 Global requirejs.onError function,但它不会为您提供比常规 requirejs
输出更多的信息。
Handling Errors 文档中的更多信息。
希望对你有帮助。
根据 Castro Roy 的回答,我进行了测试以验证这确实是 requireJS 版本的问题。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Require Test</title>
<script data-main="main" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.2/require.min.js"></script>
</head>
<body></body>
</html>
main.js
requirejs(['someFile'], function(someFile) {
console.log('main executing')
});
someFile.js
define(['someDependency'], function (someDependency) {
console.log('someFile executing')
});
和someDependency.js明显不见了。
结果:
使用 requireJs 2.1.20(在我的项目中使用)
GET http://localhost:63342/playground-simple/someDependency.js net::ERR_ABORTED
Uncaught Error: Script error for: someDependency
http://requirejs.org/docs/errors.html#scripterror
at makeError (require.min.js:1)
at HTMLScriptElement.onScriptError (require.min.js:1)
然后再次使用 requireJs 2.3.2
GET http://localhost:63342/playground-simple/someDependency.js net::ERR_ABORTED
Uncaught Error: Script error for "someDependency", needed by: someFile
http://requirejs.org/docs/errors.html#scripterror
at makeError (require.js:168)
at HTMLScriptElement.onScriptError (require.js:1735)
很清楚 是的。 这是版本问题,而不是我的项目的一些独特行为,此信息在更高版本的 require 的错误消息中给出。
遗憾的是我无法找到此更改的任何文档