在 Rails 6.1 上使用 coffee-loader 时出现 `this.getOptions is not a function` 错误

Iwa*_* B. 2 ruby ruby-on-rails coffeescript webpack webpacker

我使用 Ruby 2.7.2 和 Ruby on Rails 6.1.3 创建了一个全新的 Rails 应用程序:

rails new rails6
Run Code Online (Sandbox Code Playgroud)

然后我使用 Rails 命令安装了 CoffeeScript 编译器:

rails webpacker:install:coffee
Run Code Online (Sandbox Code Playgroud)

但是当我启动 webpack-dev-server 时,他无法正确编译:

                                      Asset       Size        Chunks                         Chunk Names
     js/application-30c16ea0138c526e20f5.js    515 KiB   application  [emitted] [immutable]  application
 js/application-30c16ea0138c526e20f5.js.map    579 KiB   application  [emitted] [dev]        application
    js/hello_coffee-5eba0c58c2666f949e88.js    395 KiB  hello_coffee  [emitted] [immutable]  hello_coffee
js/hello_coffee-5eba0c58c2666f949e88.js.map    444 KiB  hello_coffee  [emitted] [dev]        hello_coffee
                              manifest.json  710 bytes                [emitted]

ERROR in ./app/javascript/packs/hello_coffee.coffee
Module build failed (from ./node_modules/coffee-loader/dist/cjs.js):
TypeError: this.getOptions is not a function
    at Object.loader (/Users/iwan/dev/rails/rails6/node_modules/coffee-loader/dist/index.js:21:24)
? ?wdm?: Failed to compile.
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

Iwa*_* B. 8

我发现将 coffee-loader 降级到 1.0.1 版本消除了错误。

编辑 package.json 并将版本从

"coffee-loader": "^2.0.0",
Run Code Online (Sandbox Code Playgroud)

"coffee-loader": "1.0.1",
Run Code Online (Sandbox Code Playgroud)

然后运行yarn install --check-files以应用更改。

快乐的时光!