问题:Lunr.js 索引并加载静态站点内容 JSON 文件,但在部署时不起作用。它确实在 LiveReload 的开发中工作,但在部署时不起作用。
我在 AWS 上设置了 CORS 选项以允许所有请求,但它没有效果。
框架:中间人4.0
宝石:中间人搜索
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)
下面是兔子洞。知道如何解决这个问题吗?
all.js:95 未捕获类型错误:无法读取未定义的属性“版本”
在 Function.t.Index.load (all.js:95)
t.Index.prototype.off = function(t, e) {
return this.eventEmitter.removeListener(t, e)
}
在 Object.success (all.js:95)
带我到 Lunrjs 自执行函数表达式的结尾。
在你(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
},
在我 (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 或中间人问题。