webpack 错误[prerender-spa-plugin] -无法预渲染所有路由

dzhpxtsq  于 2022-11-13  发布在  Webpack
关注(0)|答案(2)|浏览(322)

我在使用Laravel 5.7和Vue 2.6实现prerender-spa-plugin时遇到了一个问题:

  1. Error: Child compilation failed:
  2. Entry module not found: Error: Can't resolve '/mnt/c/laragon/w ww/<project-folder>/resources/views/index.html' in '/mnt/c/laragon/ www/<project-folder>':
  3. Error: Can't resolve '/mnt/c/laragon/www/<project-folder>/resources /views/index.html' in '/mnt/c/laragon/www/<project-folder>'
  4. - compiler.js:79 childCompiler.runAsChild
  5. [<project-folder>]/[html-webpack-plugin]/lib/compiler.js:79:16
  6. - Compiler.js:343 compile
  7. [<project-folder>]/[webpack]/lib/Compiler.js:343:11
  8. - Compiler.js:671 hooks.afterCompile.callAsync.err
  9. [<project-folder>]/[webpack]/lib/Compiler.js:671:15
  10. - Hook.js:154 AsyncSeriesHook.lazyCompileHook
  11. [<project-folder>]/[tapable]/lib/Hook.js:154:20
  12. - Compiler.js:668 compilation.seal.err
  13. [<project-folder>]/[webpack]/lib/Compiler.js:668:31
  14. - Hook.js:154 AsyncSeriesHook.lazyCompileHook
  15. [<project-folder>]/[tapable]/lib/Hook.js:154:20
  16. - Compilation.js:1385 hooks.optimizeAssets.callAsync.err
  17. [<project-folder>]/[webpack]/lib/Compilation.js:1385:35
  18. - Hook.js:154 AsyncSeriesHook.lazyCompileHook
  19. [<project-folder>]/[tapable]/lib/Hook.js:154:20
  20. - Compilation.js:1376 hooks.optimizeChunkAssets.callAsync.err
  21. [<project-folder>]/[webpack]/lib/Compilation.js:1376:32
  22. - Hook.js:154 AsyncSeriesHook.lazyCompileHook
  23. [<project-folder>]/[tapable]/lib/Hook.js:154:20
  24. - Compilation.js:1371 hooks.additionalAssets.callAsync.err
  25. [<project-folder>]/[webpack]/lib/Compilation.js:1371:36
  26. - Hook.js:154 AsyncSeriesHook.lazyCompileHook
  27. [<project-folder>]/[tapable]/lib/Hook.js:154:20
  28. - Compilation.js:1367 hooks.optimizeTree.callAsync.err
  29. [<project-folder>]/[webpack]/lib/Compilation.js:1367:32
  30. - Hook.js:154 AsyncSeriesHook.lazyCompileHook
  31. [<project-folder>]/[tapable]/lib/Hook.js:154:20
  32. - Compilation.js:1304 Compilation.seal
  33. [<project-folder>]/[webpack]/lib/Compilation.js:1304:27
  34. - Compiler.js:665 compilation.finish.err
  35. [<project-folder>]/[webpack]/lib/Compiler.js:665:18
  36. - Compilation.js:1224 hooks.finishModules.callAsync.err
  37. [<project-folder>]/[webpack]/lib/Compilation.js:1224:4
  38. - Hook.js:154 AsyncSeriesHook.lazyCompileHook
  39. [<project-folder>]/[tapable]/lib/Hook.js:154:20
  40. - Compilation.js:1216 Compilation.finish
  41. [<project-folder>]/[webpack]/lib/Compilation.js:1216:28
  42. - Compiler.js:662 hooks.make.callAsync.err
  43. [<project-folder>]/[webpack]/lib/Compiler.js:662:17
  44. - Compilation.js:1148 _addModuleChain
  45. [<project-folder>]/[webpack]/lib/Compilation.js:1148:12
  46. - Compilation.js:1007 errorAndCallback.bail.err
  47. [<project-folder>]/[webpack]/lib/Compilation.js:1007:6
  48. - Compilation.js:1038 moduleFactory.create
  49. [<project-folder>]/[webpack]/lib/Compilation.js:1038:14
  50. - NormalModuleFactory.js:401 factory
  51. [<project-folder>]/[webpack]/lib/NormalModuleFactory.js:401:22
  52. - NormalModuleFactory.js:130 resolver
  53. [<project-folder>]/[webpack]/lib/NormalModuleFactory.js:130:21
  54. - NormalModuleFactory.js:224 asyncLib.parallel
  55. [<project-folder>]/[webpack]/lib/NormalModuleFactory.js:224:22
  56. - async.js:2830
  57. [<project-folder>]/[webpack]/[neo-async]/async.js:2830:7
  58. - async.js:6877
  59. [<project-folder>]/[webpack]/[neo-async]/async.js:6877:13

我正在关注Vue和Laravel实现部分的博客教程:https://vuejsdevelopers.com/2017/04/01/vue-js-prerendering-node-laravel/
然后设置我的webpack.config.js(在项目根文件夹上(从laravel-mix webpack.config.js内容中复制内容+教程中的代码)):

  1. var path = require('path')
  2. var webpack = require('webpack')
  3. var HtmlWebpackPlugin = require('html-webpack-plugin')
  4. var PrerenderSPAPlugin = require('prerender-spa-plugin')
  5. var Renderer = PrerenderSPAPlugin.PuppeteerRenderer
  6. /**
  7. * As our first step, we'll pull in the user's webpack.mix.js
  8. * file. Based on what the user requests in that file,
  9. * a generic config object will be constructed for us.
  10. */
  11. let mix = require('./node_modules/laravel-mix/src/index');
  12. let ComponentFactory = require('./node_modules/laravel-mix/src/components/ComponentFactory');
  13. new ComponentFactory().installAll();
  14. require(Mix.paths.mix());
  15. /**
  16. * Just in case the user needs to hook into this point
  17. * in the build process, we'll make an announcement.
  18. */
  19. Mix.dispatch('init', Mix);
  20. /**
  21. * Now that we know which build tasks are required by the
  22. * user, we can dynamically create a configuration object
  23. * for Webpack. And that's all there is to it. Simple!
  24. */
  25. let WebpackConfig = require('./node_modules/laravel-mix/src/builder/WebpackConfig');
  26. module.exports = new WebpackConfig().build();
  27. module.exports.plugins.push(
  28. new HtmlWebpackPlugin({
  29. template: Mix.paths.root('resources/views/index.html'),
  30. inject: false
  31. })
  32. );
  33. module.exports.plugins.push(
  34. new PrerenderSPAPlugin({
  35. staticDir: path.join(__dirname, 'dist'),
  36. routes: [ '/' ]
  37. })
  38. );

它在./public文件夹上生成index.html,但内容与上面的错误类似。

mwecs4sa

mwecs4sa1#

好吧,我通过渲染较少的页面解决了这个问题。看起来有一个问题是连接不好,这在我的情况下是不可能的。所以我想,较少的页面渲染将解决这个问题,它为我做到了。
我在VueCLI中使用了Vuejs,所以我只是在Vueidonconfig.js中注解了几页,瞧,它成功了。
下面你可以找到我的vue.config.js

  1. var PrerenderSpaPlugin = require('prerender-spa-plugin')
  2. var path = require('path')
  3. module.exports = {
  4. "transpileDependencies": [
  5. "vuetify"
  6. ],
  7. configureWebpack: config => {
  8. if (process.env.NODE_ENV !== 'production') return
  9. return {
  10. plugins: [
  11. new PrerenderSpaPlugin(
  12. // Absolute path to compiled SPA
  13. path.resolve(__dirname, 'dist'),
  14. // List of routes to prerender
  15. [ '/',
  16. '/login',
  17. '/whyRecruiters',
  18. '/logoutinfo',
  19. '/verifyemailinfo',
  20. //'/deleteaccountinfo',
  21. ],
  22. ),
  23. ]
  24. }
  25. }
  26. }
展开查看全部
bweufnob

bweufnob2#

用途:

  1. headless: true

参考:https://juejin.cn/post/6844904178326700045#comment

相关问题