如何将库添加到webpacker中以在Stimulus JS控制器中使用

时间:2019-02-04 01:36:29

标签: javascript ruby-on-rails webpack stimulusjs

我想在我的dayjs js控制器中使用instead of moment)库(Stimulus,但我不断收到错误消息:

  

dayjs未定义

setNextVisit(event) {
  console.log( dayjs().format('YYYY-MM-DD') );
}

enter image description here

我正在将Rails 5.2与Webpacker和Stimulus一起使用。

我通过yarn add dayjs --save添加了 dayjs ,并将其添加到/package.json中:

/package.json

{
  "name": "meh",
  "private": true,
  "dependencies": {
    "@rails/ujs": "^6.0.0-alpha",
    "@rails/webpacker": "3.5",
    "dayjs": "^1.8.2"
    "stimulus": "^1.1.1",
    "turbolinks": "^5.2.0"
  },
  "devDependencies": {
    "webpack-dev-server": "2.11.2"
  }
}

要通过webpacker gem连接webpack中的dayjs,我已将其添加到/app/javascript/packs/application.js

/app/javascript/packs/application.js

/* eslint no-console:0 */

// @RAILS/UJS
// imported in config/webpack/environment.js
Rails.start();

// TURBOLINKS
import Turbolinks from 'turbolinks';
Turbolinks.start();

// DAYJS
import dayjs from 'dayjs'

// STIMULUS
import { Application } from 'stimulus'
import { definitionsFromContext } from "stimulus/webpack-helpers"


const application = Application.start()
const context = require.context("./controllers", true, /\.js$/)
application.load(definitionsFromContext(context))

1 个答案:

答案 0 :(得分:2)

您需要在刺激控制器中而不是在主application.js中导入dayjs

您的控制器应如下所示:

import { Controller } from "stimulus";
import dayjs from 'dayjs'

export default class extends Controller {    

  SetNextVisit(event) {
    console.log( dayjs().format('YYYY-MM-DD') );
 }

}

这不是特定于刺激,而是ES6 JS的工作方式