排名5.2.3
Webpacker 4.0.2
我有layouts/application.html.erb
,我叫dateFormat.initialize();
此功能在javascript/packs/application.js
const dateFormat = {
railsDateMask: "YYYY/MM/DD",
initialize() {
}
}
当我进入索引页面时,浏览器控制台中会出现异常
ReferenceError: dateFormat is not defined
之前-此代码位于assets/javascripts/application.js
中,并且一切正常
我找到了很多解释,并且其中一个解决方案的设置不是const dateFormat
,而是global.dateFormat
,但是我认为这不是最好的解决方案,也许还有另一种方法
答案 0 :(得分:0)
默认情况下,Webpack不会将任何内容导出到全局范围。您可以像建议的那样进行类似window.dateFormat = ...
的操作,但是我更喜欢将Webpack配置为导出选定的模块。它需要做更多的工作,但要灵活得多,并且不易出错。
首先,您需要从入口点导出所需的全局引用。因此,将您的对象声明为来自app/javascript/packs/application.js
的导出内容:
export const dateFormat = { ... };
现在告诉Webpack您要将输出从config/webpack/environment.js
中的Webpack配置导出到窗口目标。
environment.config.merge({
output: {
library: ['Packs', '[name]'],
libraryTarget: 'window',
}
})
上面的配置说“使我的应用程序可以从window
的{{1}}导出”。例如,要从控制台或视图中访问导出的Packs.application
对象,请使用dateFormat
。
注意:名称空间window.Packs.application.dateFormat
是任意的;使用适合您的应用程序的任何东西。 Packs.[name]
占位符将创建一个单独的每个入口命名空间,如果最终使用多个入口点,它将有助于防止冲突。