node.js - node require 一个动态模块出错

 好富饶_152 发布于 2022-11-01 20:17

由于一个vue项目客户需求,要把原来的后台的单模版改成类似前台的多模板形式,因为前台页面我用的PHP做的多模板,所以实现比较容易,但是在vue中没有找到类似功能的Node模块,所以打算自己搞一下,后端使用的是laravel框架,也就顺带用他自带的laravel mix,但是不知道为什么在require一个变量路径的vue组件是出现了各种错误,哪位知道如何解决吗?先谢啦

我在vue-router里这样调用

export default {
    path: '',
    component: require('../../../tool').view('DashBoard.vue'),
    name: 'dashboard'
}

require 一个视图变量 './template/default/views/' + $view 运行正确
当然,我们的default是个变量,所以就开始出错了

view: function($view) {
    let $template = 'default';
    return require('./template/default/views/' + $view);
}

require 一个路径,使用 $template作为模板变量
./template/' + $template + '/views/' + $view 运行npm run dev就出错

view: function($view) {
    let $template = 'default';
    return require('./template/' + $template + '/views/' + $view);
}

require 一个路径,使用视图路径做变量,也是出错,编译命令npm run dev 运行正确,运行程序出错
app.js:12 Uncaught Error: Cannot find module "."

module.exports = {
    view: function($view) {
        let $template = './template/default/views/';
        return require($template + $view);
    }
};

请问该如何解决这个问题呢?谢谢...

1 个回答
  • webpack是要确定依赖去加载和打包模块的,所以并不能像node一样require一个动态路径。
    1、暴力用switch把变量常量化

    2、设置context

    参考 https://segmentfault.com/q/10...

    3、或者使用动态加载组件机制

    webpack是支持异步加载模块的

    require(['./xxx.vue'], function(module){
     
    });

    参见vue官方文档

    2022-11-12 01:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有