r.js 评估 'text' 插件尽管 'stubModules' 参数
r.js evaluates 'text' plugin despite on 'stubModules' param
首先是一些代码:
我的 r.js 引导文件,我 运行 由 r.js.cmd -o static/js/boot.js
({
baseUrl: './',
preserveLicenseComments: false,
name: 'boot',
stubModules: ['text'],
mainConfigFile: './requirejs/config.js',
out: 'build.min.js',
//paths: {
// 'text': 'plugins/requirejs.text'
//},
})
然后插件在控制台抛出异常:
Error: Error: Loader plugin did not call the load callback in the build:
text:
text!langJSON: Error: ENOENT, no such file or directory 'C:\web\lang\main'
text!/web/downloads/links.json: Error: ENOENT, no such file or directory 'C:\web\downloads\links.json'
有人可以回答我为什么 r.js 评估 'text' 插件尽管构建配置文件属性中的 'stubModules' 参数吗?
我以前读过这篇文章:
- How can I prevent the Require.js optimizer from including the text plugin in optimized files?
- Inlining require.js text! using Grunt
提前致谢。
stubModules
不会告诉优化器跳过通过 text
插件加载的所有内容。它只是告诉优化器在最终包中用这段代码替换插件:
define('text',{load: function(id){throw new Error("Dynamic load not allowed: " + id);}});
如果您要创建一个包含您的代码所需的每个模块的包,这将很有用。如果是这种情况,那么通过 text
加载的所有模块将 已经 在包中,因此包中包含 text
插件的代码是毫无意义,因为它不会被使用。 (在这种情况下,插件在构建时使用,而不是在 运行 时使用。)
你得到的错误是因为优化器仍然试图将通过text
加载的那些模块包含在你的包中,但它没有找到文件。
如果您想做的是从捆绑包中排除通过 text
加载的所有内容,您可以做的一件事是将 paths
添加到您的构建配置中,将这些模块列为 empty:
。例如:
paths: {
'web/downloads/links.json': 'empty:',
...
}
但是在 运行 时您将需要 text
插件来加载文本,因此您应该删除 stubModules
.
首先是一些代码:
我的 r.js 引导文件,我 运行 由 r.js.cmd -o static/js/boot.js
({
baseUrl: './',
preserveLicenseComments: false,
name: 'boot',
stubModules: ['text'],
mainConfigFile: './requirejs/config.js',
out: 'build.min.js',
//paths: {
// 'text': 'plugins/requirejs.text'
//},
})
然后插件在控制台抛出异常:
Error: Error: Loader plugin did not call the load callback in the build:
text:
text!langJSON: Error: ENOENT, no such file or directory 'C:\web\lang\main'
text!/web/downloads/links.json: Error: ENOENT, no such file or directory 'C:\web\downloads\links.json'
有人可以回答我为什么 r.js 评估 'text' 插件尽管构建配置文件属性中的 'stubModules' 参数吗?
我以前读过这篇文章:
- How can I prevent the Require.js optimizer from including the text plugin in optimized files?
- Inlining require.js text! using Grunt
提前致谢。
stubModules
不会告诉优化器跳过通过 text
插件加载的所有内容。它只是告诉优化器在最终包中用这段代码替换插件:
define('text',{load: function(id){throw new Error("Dynamic load not allowed: " + id);}});
如果您要创建一个包含您的代码所需的每个模块的包,这将很有用。如果是这种情况,那么通过 text
加载的所有模块将 已经 在包中,因此包中包含 text
插件的代码是毫无意义,因为它不会被使用。 (在这种情况下,插件在构建时使用,而不是在 运行 时使用。)
你得到的错误是因为优化器仍然试图将通过text
加载的那些模块包含在你的包中,但它没有找到文件。
如果您想做的是从捆绑包中排除通过 text
加载的所有内容,您可以做的一件事是将 paths
添加到您的构建配置中,将这些模块列为 empty:
。例如:
paths: {
'web/downloads/links.json': 'empty:',
...
}
但是在 运行 时您将需要 text
插件来加载文本,因此您应该删除 stubModules
.