【问题标题】:Webpack dynamic requestWebpack 动态请求
【发布时间】:2016-04-04 09:30:58
【问题描述】:

没有用

let serviceName = "AuthService";
let servicePath = `app/services/${serviceName}`; 
let service     = require(servicePath);

它正在工作

let service = require("app/services/AuthService");

如何使用 webpack 动态模块?

错误:

Cannot find module 'app/services/AuthService'.

我在文件末尾写了日志消息,它显示在模块错误之前。

我在 doc 中发现只需要使用一个简单的 require。 (https://webpack.github.io/docs/context.html#dynamic-requires)

我认为我不需要为这项工作创建自己的上下文。

【问题讨论】:

  • 你试过导入吗?
  • Daenarys,如果您在谈论“进口”?那么是的

标签: webpack commonjs


【解决方案1】:

有两种选择:

1) 你需要提供具体的表达方式:

let serviceName = "AuthService";
let service  = require('./app/services/' + serviceName);

webpack 解析 require 语句并提取一些信息(目录、正则表达式)用于构建上下文。

2) 您可以使用 require.context 函数创建自己的上下文:

let serviceName = "AuthService";
let context = require.context('./app/services', false);
let service = context('./' + serviceName);

查看更多https://webpack.github.io/docs/context.html

【讨论】:

  • 我尝试了第一个选项,但它不起作用。通过调试我了解到这个模块在 webpack 模块列表中不存在,我不知道为什么
  • 也许你需要检查你的路径
  • 让 serviceName = propertyKey.charAt(0).toUpperCase() + propertyKey.slice(1);让 servicePath = ./app/services/${serviceName};让服务 = 要求(服务路径);未捕获的错误:找不到模块“./app/services/AuthService”。然后就是魔法……
  • 也许这很重要,但我在注释中使用此代码
  • require(servicePath) 它不起作用。我已经编写了调用 require 方法的确切结构。 require('./app/services/' + serviceName) - 只有这样,没有像 servicePath 这样的临时变量
猜你喜欢
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
  • 2017-01-30
  • 2019-02-11
相关资源
最近更新 更多