我是 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安装过程的要点:
- 在 gemfile 中:gem 'webpacker',github:'rails/webpacker'
- 将此行添加到 asset.rb:Rails.application.config.assets.paths << Rails.root.join('node_modules')
- 在 application.html.haml 的 %head 中添加:= javascript_pack_tag 'application'
- 重启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/