3

raw-loader尝试要求任何.md文件时出错。

添加原始加载器以导入降价文件:

  test: /\.md$/i,
      use: [{
        loader: 'raw-loader',
        options: {
          esModule: false
        }
      }],

.js文件中,需要降价文件..

return require(postPath)
// postPath is '../posts/awards.md'
Error: Cannot find module '../posts/awards.md'
at webpackEmptyContext (eval at <path to file>)
....

markdown 文件的路径是相对路径:/posts/awards.md

如果我改变awards.md它的awards.json工作原理。所以也许这是raw-loader寻找一个exportawards.md不是找到一个的问题,因此出错了?指示WebpackesModule: false不将其视为模块的目的不是吗?

4

1 回答 1

1

看来你和这个人有同样的问题。

引用一个答案:

Webpack 在构建时执行静态分析。

它不会尝试推断 import(test) 可能是任何变量的变量,因此失败。

import(path+"a.js") 也是如此。

如果您需要真正的动态导入,则必须将其限制为已知路径:

import("./locales/" + locale + ".js")

我重新创建了您的问题,果然:

function test(mod) {
    return require(mod)
}

console.log(test("./test.md"))

不工作。然而这有效:

function test(mod) {
    return require("./" + mod)
}

console.log(test("test.md"))

因此,将您的代码更改为以下内容就足够了:

return require("../" + postPath + ".md")

并更改postPath为:

// postPath is 'posts/awards'
于 2020-06-01T02:03:06.580 回答