如何使用webpacker使Rails 6项目中的页面可以访问javascript函数?
在一个Rails项目中,我正在尝试从使用旧的链轮资产管道切换到使用webpacker。我已经设置了以下测试文件: app/javascript/lib/foo.js如何使用webpacker使Rails 6项目中的页面可以访问javascript函数?,javascript,ruby-on-rails,node.js,webpacker,ruby-on-rails-6,Javascript,Ruby On Rails,Node.js,Webpacker,Ruby On Rails 6,在一个Rails项目中,我正在尝试从使用旧的链轮资产管道切换到使用webpacker。我已经设置了以下测试文件: app/javascript/lib/foo.js 函数foo(){ console.log('foo') } console.log('bar')) app/javascript/packs/application.js //一些标准Rails JS需要 // ... require('lib/foo') app/views/test/index.html foo() 在我
函数foo(){
console.log('foo')
}
console.log('bar'))
app/javascript/packs/application.js
//一些标准Rails JS需要
// ...
require('lib/foo')
app/views/test/index.html
foo()
在我的layouts/application.html.erb中
当我在浏览器中转到该页面时,我看到“bar”被记录到我的控制台上,然后是
“引用错误:未定义foo”
我尝试了几种不同的方法来设置我的文件,比如使用import而不是require,或者在我的js文件中设置module.exports=foo
或export default foo
,但是我没有幸运地绕过上面的错误消息
简而言之,如何将javascript文件从链轮移动到webpacker?如果可能,如何在不更改现有javascript代码的情况下执行此操作?您需要将函数和模块作为命名导出从
应用程序中导出。js
打包并扩展Webpack configoutput
,以指定库名和目标var
(或者窗口
也可以工作)
//config/webpack/environment.js
environment.config.merge({
输出:{
库:['Packs','[name]',//从应用程序包导出到“Packs.application”
libraryTarget:'var',
}
})
//app/javascript/packs/application.js
从“../lib/foo”导入foo
出口{
福
}
$(文档).ready(函数(){
Packs.application.foo();
});
库
名称是任意的。使用[name]
占位符是可选的,但如果您使用多个“包”,则允许您导出到单独的模块。您的意思是webpack系统中包含的每个javascript模块都需要以这种方式导出?仅需要从包外显式引用的模块,即。,从全局范围来看。我真的不认为这比用一个单独的javascript\u include\u标记
行包含它更容易,但OP询问的是网页包,所以+1。@DavidDombrowsky能javascript\u include\u标记
使用javascript模块吗?