我似乎无法弄清楚如何使用 Webpacker 在 Rails 6 中调用函数。如果在控制台中调用它们,我会收到该函数未定义的消息。 我怎样才能调用这些函数?还是我不应该这样做的充分理由?
问题的最简单形式: 在 application.js 中,我有一个名为 something 的函数。
# app/javascripts/packs/application.js
function something() {
console.log("something")
}
$(document).on("turbolinks:load", something())
# console
something
但是当我在 onClick() 的链接中或在 *.js.erb 文件中使用它时,或者只是将函数放在控制台中时,我得到错误 ReferenceError: something is not defined
该函数确实出现在我的 Webpacker 编译的 application.js 文件中
我的 webpack 设置如下:(我只调整了 webpack 配置以包含 jQuery 和 popper.js)
# config/webpack/environment.js
const { environment } = require('@rails/webpacker')
const webpack = require('webpack')
environment.plugins.prepend('Provide',
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
jquery: 'jquery',
Popper: ['popper.js', 'default'],
ActionCable: 'actioncable',
})
)
const config = environment.toWebpackConfig()
config.resolve.alias = {
jquery: "jquery/src/jquery",
}
module.exports = environment
最佳答案
问题是 webpack 没有公开这些函数。
为了能够从 *.js.erb
文件中调用它们,您需要在窗口中定义它们。
# app/javascripts/packs/application.js
function something() {
console.log("something")
}
window.app.something
在你的*.js.erb
window.app.something();
关于webpack - 轨道和网络包 : How do I call functions in application pack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57711537/