问题:Lunr.js索引并加载静态网站内容JSON文件,但在部署时不起作用。它在LiveReload的开发中工作,但在部署时不起作用。
我在AWS上设置了CORS选项以允许所有请求,但它没有任何效果。
框架: Middleman 4.0
宝石:Middleman-Search
JS :Lunr.js 0.7.0(虽然问题与0.7.2重复)
主机:Amazon S3静态网站托管
当页面加载时,我立即在控制台中收到此错误,因为下载和缓存搜索索引的AJAX请求是一个自执行的函数表达式。
这是我的堆栈跟踪:
Uncaught TypeError: Cannot read property 'version' of undefined
at Function.t.Index.load (all.js:95)
at Object.success (all.js:95)
at u (all.js:3)
at Object.fireWith [as resolveWith] (all.js:3)
at i (all.js:4)
at XMLHttpRequest.<anonymous> (all.js:4)
下面是兔子洞。知道如何解决这个问题吗?
t.Index.prototype.off = function(t, e) {
return this.eventEmitter.removeListener(t, e)
}
在Object.success(all.js:95)
让我走到Lunrjs自动执行函数表达的末尾。
at u(all.js:3)
dt.Callbacks = function(t) {
t = "string" == typeof t ? s(t) : dt.extend({}, t);
var e, n, i, o, r = [], a = [], l = -1, u = function() {
for (o = t.once,
i = e = !0; a.length; l = -1)
for (n = a.shift(); ++l < r.length; )
r[l].apply(n[0], n[1]) === !1 && t.stopOnFalse && (l = r.length,
n = !1);
t.memory || (n = !1),
` e = !1,
o && (r = n ? [] : "")
在Object.fireWith [as resolveWith](all.js:3)
fireWith: function(t, n) {
return o || (n = n || [],
n = [t, n.slice ? n.slice() : n],
a.push(n),
e || u()),
this
},
at i(all.js:4)
u ? m.resolveWith(g, [f, T, S]) : m.rejectWith(g, [S, T, p]),
XMLHttpRequest上的。 (all.js:4)
"abort" === t ? a.abort() : "error" === t ? "number" != typeof a.status ? r(0, "error") : r(a.status, a.statusText) : r(We[a.status] || a.status, a.statusText, "text" !== (a.responseType || "text") || "string" != typeof a.responseText ? {
我不知道我不明白什么,在哪里探究,以确定我是否引起了这个问题。它可能是Lunrjs,Amazon S3,CORS或Middleman问题。