我正在尝试在Web worker中使用RequireJS。问题是我在使用它时不断收到以下错误。 Uncaught Error: importScripts failed for underscore at ./lib/underscore.js
我已经测试了我的配置选项,它们只会在导入Underscore时导致此错误。他们在这里:
{
baseUrl: './',
paths: {
jquery: 'lib/jquery',
underscore: 'lib/underscore'
},
shim: {
underscore: {
exports: '_'
}
}
}
如有必要,我可以添加更多信息。该项目的来源位于https://github.com/isaach1000/canvas的GitHub上。
更新:修复RequireJS仍然没有运气,但我使用Grunt任务修复了我的问题。这是配置:
requirejs: {
worker: {
options: {
baseUrl: 'js',
name: 'task',
out: 'build/task.js',
paths: {
jquery: 'lib/jquery',
underscore: 'lib/underscore'
},
shim: {
underscore: {
exports: '_'
}
},
include: ['lib/require.js'],
optimize: 'none'
}
}
}
答案 0 :(得分:3)
您是否使用require
importScripts
正确加载到工作人员中?
importScripts('path/to/require.js');
require({ ... });
test in the require repo是一个非常好的例子,也见乍得在How to use Web Workers into a Module build with Requirejs?中的回答
网络工作者有一个dedicated global scope。在您发布问题之后,Underscore在版本1.6.0(February 2014之前)不使用AMD时,问题很可能会加剧。
我强烈建议您按照本杰明对原始问题的评论建议使用importScripts()
(MDN)。
标准定义可在https://html.spec.whatwg.org/multipage/workers.html#importing-scripts-and-libraries
找到确保require
适用于不同平台webWorkers
中{{1}}的所有库的麻烦是不值得的,并且性能明智不会受到任何打击,因为工作人员不会影响主应用程序的性能。