使用文本插件的 requirejs 访问 azure 应用程序服务文件时出错

getting error to access file of azure app service by requirejs with text plugin

我在 cordova 浏览器平台的 platforms/browser/www 下有文件,我已经将该文件上传到 azure kudu wwwroot 文件夹中。该应用程序 运行 在本地计算机上完美运行,但在 运行 Azure 应用程序服务上出现错误。

错误:

当我调试它然后在第 17 行收到错误

define(["handlebars"], function (Handlebars) {
  Handlebars = Handlebars || this.Handlebars;
  var templateExtension = ".hbs";

  return {

    pluginBuilder: "./hbs-builder",

    // http://requirejs.org/docs/plugins.html#apiload
    load: function (name, parentRequire, onload, config) {

      // Get the template extension.
      var ext = (config.hbs && config.hbs.templateExtension ? config.hbs.templateExtension : templateExtension);

      // In browsers use the text-plugin to the load template. This way we
      // don't have to deal with ajax stuff
      parentRequire(["text!" + name + ext], function (raw) {
        // Just return the compiled template
        onload(Handlebars.compile(raw));
      });

    }

  };
});

我无法理解为什么文本插件无法访问 azure 应用程序服务上的文件,而本地计算机上的应用程序 运行 却完美无缺。如有任何帮助,我们将不胜感激!

也检查了这个 URL 但没有帮助:

https://github.com/requirejs/text

经过一番研究,我终于得到了答案。 RequireJS Text 插件需要访问 wwwroot 文件夹中的一些静态文件,为此我们需要 Web.config 包含我们想要的静态内容的文件并重写规则。在我的例子中 Web.config 文件如下,我的网站 运行 现在完美。

<?xml version="1.0" encoding="utf-8"?>

<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".hbs" mimeType="text/css" />
        </staticContent>
        <rewrite>
            <rules>
                <rule name="Main Rule" stopProcessing="true">
                <match url=".*" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="/" />
            </rule>

            </rules>
        </rewrite>
    </system.webServer>
</configuration>