javascriptvue.jswebpackvue-loader

Vue2 Template compiler broken?


I compile my code via webpack(^5.51.1) and vue-loader(^17.0.0) and I tried firing up an old project and it's giving me this error:

[webpack-cli] Failed to load '/var/www/webpack.config.js' config
[webpack-cli] Error: Cannot find module 'vue/compiler-sfc'
Require stack:
- /var/www/node_modules/vue-loader/dist/resolveScript.js
- /var/www/node_modules/vue-loader/dist/select.js
- /var/www/node_modules/vue-loader/dist/index.js
- /var/www/webpack.config.js
- /var/www/node_modules/webpack-cli/lib/webpack-cli.js
- /var/www/node_modules/webpack-cli/lib/bootstrap.js
- /var/www/node_modules/webpack-cli/bin/cli.js
- /var/www/node_modules/webpack/bin/webpack.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:999:19)
    at require (/var/www/node_modules/v8-compile-cache/v8-compile-cache.js:159:20)
    at Object.<anonymous> (/var/www/node_modules/vue-loader/dist/resolveScript.js:5:24)
    at Module._compile (/var/www/node_modules/v8-compile-cache/v8-compile-cache.js:192:30)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1151:10)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:999:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/var/www/node_modules/vue-loader/dist/resolveScript.js',
    '/var/www/node_modules/vue-loader/dist/select.js',
    '/var/www/node_modules/vue-loader/dist/index.js',
    '/var/www/webpack.config.js',
    '/var/www/node_modules/webpack-cli/lib/webpack-cli.js',
    '/var/www/node_modules/webpack-cli/lib/bootstrap.js',
    '/var/www/node_modules/webpack-cli/bin/cli.js',
    '/var/www/node_modules/webpack/bin/webpack.js'
  ]
}

I really don't know what's going on. I've tried adding @vue/compiler-sfc to my package.json but it doesn't work. I really don't want to switch to Vue3 since that would break a lot of stuff.

Edit: see package.json: pastebin


Solution

  • It seems like there are some breaking changes in vue-loader > 15. It told me once forced npm to stay on version 15. Didn't find that anywhere else...