使用文本插件的 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 但没有帮助:
经过一番研究,我终于得到了答案。 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>
我在 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 但没有帮助:
经过一番研究,我终于得到了答案。 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>