我正在尝试修复Rails 6 + Webpack应用程序中的一些控制台错误,即使更改后我重新启动了服务器,更改似乎也没有保存。
例如,出现此错误:
datatables.js:32 Uncaught TypeError: Cannot read property 'isDataTable' of undefined
at HTMLDocument.<anonymous> (datatables.js:32)
at HTMLDocument.dispatch (jquery.js:4588)
at HTMLDocument.elemData.handle (jquery.js:4408)
at Object../node_modules/turbolinks/dist/turbolinks.js.e.dispatch (turbolinks.js:75)
at r.notifyApplicationAfterPageLoad (turbolinks.js:994)
at r.pageLoaded (turbolinks.js:948)
at turbolinks.js:872
要解决此问题,我将有问题的行更改为:
$(document).on('turbolinks:load', function() {
if (!$.fn.dataTable.isDataTable("table")) {
$("table").DataTable();
}
});
我重新启动了服务器,甚至是浏览器和整个计算机(以防万一),但是错误仍然存在。 当我访问源代码时,好像没有更改代码,但是在编辑器中看到了更新的版本。 我所做的每一次更改都会发生这种情况,我想我缺少明显的东西。
感谢您的帮助!
答案 0 :(得分:1)
由于语法错误或缺少模块,webpack
很可能无法编译源代码。在更改源时,在另一个控制台窗口中运行bundle exec bin/webpack-dev-server
以查看正在进行的编译(有错误)。或者,您可以发出rake webpacker:compile
来手动构建包。
例如,您可以使用rails server
和webpack-dev-server
gem在同一窗口中同时运行Procfile
和foreman
。
答案 1 :(得分:0)
尝试将您的库添加到body标签下的applicatiob_vendor: 经验:
<body>
#main-content........
#footer.............
= javascript_include_tag 'application_vendor'
</body>
,然后创建application_vendor.js并要求您的js库为您所需。接下来,添加到您的asset.rb
Rails.application.config.assets.precompile += %w[ application_vendor.js ]
希望对您有用
答案 2 :(得分:0)
如果您将Rails 6+与webpacker一起使用,则另一个原因是您的Rails应用程序不编译app/assets
,而是使用不包含CSS文件的新“ app / javascripts”文件夹。
如果是这样,您可以参考该线程https://stackoverflow.com/a/59870385,以获取有关如何在Webpack构建中包括app/assets/stylesheets
的解决方案。