我是webpacker和yarn的新手 . 我成功安装了包:
纱线添加时刻
EDIT2:
这是我的导入
# app/javascript/packs/application.js
import moment from 'moment/moment'
import 'moment/locale/de-ch'
Problem: I can't use the "moment" package in my old JS asset files
第一个工作,另一个不工作:
# 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
EDIT1:
这里是webpacker安装过程的关键点:
宝石文件
-
: gem 'webpacker', github: 'rails/webpacker'
-
将此行添加到assets.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;也许我的应用程序中缺少某些东西
2 回答
我有一个类似的问题,即在整个app / assets / javascript文件中使用了momentjs,它是通过gem包含的(实际上,更糟糕的是,rails-assets) . 看起来我们都需要在全球范围内提供时刻对象,而不仅仅是在包内 . 所以,以下修复了我和我将保持它,直到我摆脱app / assets / javascript文件 .
首先我认为这是一个解决方案,但事实并非如此:https://github.com/rails/webpacker#resolved-paths
在“/config/webpacker.yml”中我添加了这个:
在这里我导入了使用“moment.js”的文件:
=>仍然是错误
后来我发了这篇文章:http://samuelmullen.com/articles/embracing-change-rails51-adopts-yarn-webpack-and-the-js-ecosystem/
看来我不能把“时刻”包与“旧”资产JS(?)混在一起