webpack - 轨道和网络包 : How do I call functions in application pack?

标签 webpack ruby-on-rails-6

我似乎无法弄清楚如何使用 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/

相关文章:

node.js - Webpack 4 和用于长期缓存的哈希

javascript - $(...).tooltip 不是 Rails 6 webpack 的函数

ruby - RUBYOPT env 有哪些选项?

ruby-on-rails - PG::UndefinedFunction: 错误:运算符不存在:文本 = bool 值

vue.js - 元素 UI 自定义 sass 变量

javascript - webpack4 lodash 大小太大

vue.js - 如何在构建时替换图像和文件而不在应用程序中引用它们?

ruby-on-rails - 弃用警告:ActionView::Base 实例应该使用查找上下文、赋值和 Controller 构建

ruby-on-rails - NameError 主常量名称错误 — 但 `primary` 不存在?

node.js - 如何让 Mocha 识别单元测试