javascript - Rails 5.1 Webpacker – 通过 yarn 添加 moment.js – 如何在旧 Assets JS 中使用包

标签 javascript ruby-on-rails webpacker

我是 webpacker 和 yarn 的新手。我成功安装了该软件包:

yarn add moment

编辑2:

这是我的导入

# app/javascript/packs/application.js
import moment from 'moment/moment'
import 'moment/locale/de-ch'

问题:我无法在旧的 JS 资源文件中使用“moment”包

第一个有效,另一个无效:

# in: app/javascript/packs/application.js
console.log('Log: ' + moment([2007, 0, 29]).toNow()) #=> Log: in 10 Jahren

# in app/*assets*/javascripts/application.js
console.log('Log2: ' + moment([2007, 0, 29]).toNow()) #=> Uncaught ReferenceError: moment is not defined

编辑1:

这里是webpacker安装过程的要点:

  1. 在 gemfile 中:gem 'webpacker',github:'rails/webpacker'
  2. 将此行添加到 asset.rb:Rails.application.config.assets.paths << Rails.root.join('node_modules')
  3. 在 application.html.haml 的 %head 中添加:= javascript_pack_tag 'application'
  4. 重启Rails服务器并启动webpacker

注意:我将我的应用程序从 Rails 4.2 升级到 5.0,然后又升级到 5.1;也许我的应用程序中缺少某些内容

最佳答案

我有一个类似的问题,momentjs 在整个 app/assets/javascript 文件中使用,并且它是通过 gem 包含的(实际上,更糟糕的是,rails-assets)。看起来我们都需要时刻对象在全局范围内可用,而不仅仅是在包内。因此,以下内容为我解决了这个问题,我将保留它,直到我摆脱 app/assets/javascript 文件。

import moment from 'moment'

window.moment = moment

关于javascript - Rails 5.1 Webpacker – 通过 yarn 添加 moment.js – 如何在旧 Assets JS 中使用包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45337550/

相关文章:

javascript - 下载从 javascript 生成 POST 参数的主页

ruby-on-rails - 如何使用路由重命名 Rails Controller ?

ruby-on-rails - 将成员值以表格形式添加到复选框的input_html

ruby-on-rails - 通过 webpacker 编译 js 导致 : SassError: expected "{"

javascript - Facebook 评论插件在创建评论时返回 500 错误

javascript - Phantom js 在尝试运行示例 js 文件时返回 'can' t open [file name]'

javascript - 如何实现req/res拦截器

ruby-on-rails - ruby rails : Dropdown search - invalid input syntax for type boolean: "%%"

javascript - 如何在 Rails 6 中使用 Webpacker 加载 d3.js?

ruby - Rails 6.1.1 不会在生产模式下加载 webpacker 创建的 CSS 文件