如何解决Webpacker 设置中未定义 Rails UJS
未定义对象的 Webpacker 问题让我想到了 zxing 库与要在给定页面上执行的脚本集成在一起(否则 zxing
不会被选中)。因此application.js has
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
import "channels"
require('@client-side-validations/client-side-validations')
require("jquery")
import '../src/zxing_scan.min'
使用 turbolinks:load
初始化的脚本(也没有 turbolinks 引用运行,结果相同)调用 Rails AJAX 函数(左缩进的部分)
window.addEventListener('turbolinks:load',function () { [...]
document.getElementById('startButton').addEventListener('click',() => {
codeReader.decodeFromVideoDevice(selectedDeviceId,'video',(result,err) => {
if (result) {
console.log(result)
document.getElementById('result').textContent = result.text
let formData = new FormData();
let CodeParams = {
code_data: result.text
};
formData.append("code_json_data",JSON.stringify(CodeParams));
Rails.ajax({
url: "section_update",type: "post",data: formData
});
}
if (err && !(err instanceof ZXing.NotFoundException)) {
console.error(err)
document.getElementById('result').textContent = err
}
})
console.log(`Started continous decode from camera with id ${selectedDeviceId}`)
})
在页面加载时,zxing 处于活动状态(因为列出了设备摄像头并且确实发生了扫描)并且控制台会记录一个错误:
ReferenceError: Rails is not defined
对于调用 Rails.ajax
的那一行。查询控制台,实际上返回 Rails
(和 gon
!)未定义,而 ZXing
是一个对象。所以 webpacker 设置出了点问题。
如何定义这些构建块?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。