【发布时间】:2020-08-29 19:22:24
【问题描述】:
我在使用 Webpacker 的 Rails 6 应用程序中具有以下 Javascript 结构。
app/javascript
+ packs
- application.js
+ custom
- hello.js
下图是上述JS文件中的内容
app/javascript/custom/hello.js
export function greet(name) {
console.log("Hello, " + name);
}
app/javascript/packs/application.js
require("@rails/ujs").start()
require("jquery")
require("bootstrap")
import greet from '../custom/hello'
config/webpack/environment.js
const { environment } = require('@rails/webpacker')
const webpack = require('webpack')
environment.plugins.prepend('Provide',
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
Popper: ['popper.js', 'default']
})
)
module.exports = environment
现在在我的 Rails 视图中,我正在尝试使用导入的函数 greet,如下所示
app/views/welcome/index.html.haml
- name = 'Jignesh'
:javascript
var name = "#{name}"
greet(name)
当我加载视图时,我在浏览器的控制台中看到 ReferenceError: greet is not defined 错误。
我试图寻找解决这个问题的方法,并在网上找到了许多资源,但没有一个能帮助我。最后,当我在建议中起草这个问题时,我发现 How to execute custom javascript functions in Rails 6 确实接近我的需要许多视图需要将数据从 Rails 视图传递到 JS 函数,以便将自定义文件移动到 app/javascript/custom 文件夹下。
如果有人能帮助我了解我遇到的ReferenceError 背后的原因,我将不胜感激。
注意:
我不精通 Node 领域的 Javascript 开发,并且对 Webpacker、Webpack、Javascript 的模块、import、export、require 语法等也很陌生,所以如果你发现任何愚蠢的东西,请多多包涵我在问什么。在尝试升级现有 Rails 应用程序以使用版本 6 时,我遇到了上述情况。
【问题讨论】:
标签: javascript ruby-on-rails-6 webpacker