研究了一下终于明白了。
require 是 CommonJS 的模块导入方式,而组件定义时写的 export default 是 ES6 方式,因此require 导入的结果其实是一个含 default 属性的对象,所以 vue 中 component 用这个会报错,而恰好 vue 的命名视图组件注册用 components ,而官方也说了“如果 router-view 没有设置名字,那么默认为 default”,所以这两个default 正好对应起来,于是像楼主所说加了s就不会报错了。而合理的用法应该是 require('xxx.vue').default 或是用 import。
参考:
https://weiku.co/blog/41.html
https://segmentfault.com/q/1010000011171159
    IP属地:吉林
  
 
