Rails 5.1 Webpacker –通过yarn添加了moment.js –如何在旧资产JS中使用包

Low*_*der 0 javascript ruby-on-rails webpacker

我是webpacker和yarn的新手。我使用以下命令成功安装了该软件包:

加纱力矩

编辑2:

这是我的进口

# app/javascript/packs/application.js
import moment from 'moment/moment'
import 'moment/locale/de-ch'
Run Code Online (Sandbox Code Playgroud)

问题:我不能在旧的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
Run Code Online (Sandbox Code Playgroud)

编辑1:

这里是webpacker安装过程的关键点:

  1. 在gemfile:gem'webpacker',github:'rails / webpacker'中
  2. 将此行添加到assets.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。也许我的应用程序中缺少某些东西

Ali*_*lov 5

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

import moment from 'moment'

window.moment = moment
Run Code Online (Sandbox Code Playgroud)