Javascript 如何将库添加到webpacker以用于JS控制器

Javascript 如何将库添加到webpacker以用于JS控制器,javascript,ruby-on-rails,webpack,stimulusjs,Javascript,Ruby On Rails,Webpack,Stimulusjs,我想使用这个库(在我的js控制器中,但我一直收到一个错误,上面写着: 没有定义dayjs 我正在使用Rails5.2和Webpacker以及刺激 我通过添加dayjs--save添加了dayjs,它将此添加到/package.json: /package.json { "name": "meh", "private": true, "dependencies": { "@rails/ujs": "^6.0.0-alpha", "@rails/webpacker":

我想使用这个库(在我的js控制器中,但我一直收到一个错误,上面写着:

没有定义dayjs

我正在使用Rails5.2和Webpacker以及刺激

我通过
添加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"
  }
}
为了通过webpack 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))

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

您的控制器应如下所示:

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

export default class extends Controller {    

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

}
这不是特定于刺激,而是ES6 JS的工作原理

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

export default class extends Controller {    

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

}