配置tmhDynamicLocale后加载angular-locale_es.js遇404错误求助
解决Angular tmhDynamicLocale请求本地化文件失败的问题
看起来你遇到的是本地化文件找不到的问题(ERR_ABORTED通常对应404状态码),咱们一步步来排查解决:
1. 确认本地化文件是否存在
首先检查你的public/lib/angular-i18n/目录下,有没有angular-locale_es.js这个文件:
- 如果没有,你需要先获取这个文件:
- 可以从Angular官方提供的i18n资源包中获取,或者通过npm安装
angular-i18n包,然后从node_modules/angular-i18n/目录下复制需要的文件到你的public/lib/angular-i18n/路径下 - 注意文件名要完全匹配:
angular-locale_es.js(是小写的es,不要写成大写或者带多余后缀的格式)
- 可以从Angular官方提供的i18n资源包中获取,或者通过npm安装
2. 验证路径配置的正确性
你设置的localeLocationPattern是:
tmhDynamicLocaleProvider.localeLocationPattern('public/lib/angular-i18n/angular-locale_{{locale}}.js');
直接在浏览器地址栏访问http://localhost:3000/public/lib/angular-i18n/angular-locale_es.js,看看能不能打开这个文件:
- 如果打不开,说明路径配置错误:
- 比如如果你的本地化文件实际放在
node_modules/angular-i18n/下,就需要把路径改成:tmhDynamicLocaleProvider.localeLocationPattern('node_modules/angular-i18n/angular-locale_{{locale}}.js'); - 或者调整你的静态资源目录结构,让
public/lib/angular-i18n/下的文件能被服务器正确访问到。
- 比如如果你的本地化文件实际放在
3. 检查静态文件服务的配置
如果你用的是Node.js/Express作为后端,要确保已经把public目录设置为静态资源目录:
// Express中的示例配置 const express = require('express'); const app = express(); app.use(express.static('public')); // 这行必须存在,否则/public开头的路径无法访问
如果没有配置静态资源服务,服务器会无法找到public目录下的文件,从而返回404错误。
4. 修正控制器代码的小问题
虽然这不是当前404错误的直接原因,但你的控制器代码存在两个小问题,可能导致后续功能异常:
- 控制器名称和服务名称
tmhDynamicLocale重名了,容易引发冲突 - 函数中使用了
$scope但没有注入
修正后的控制器代码:
angular.module('core').controller('LocaleController', function($scope, tmhDynamicLocale) { $scope.spanish = function () { tmhDynamicLocale.set('es'); }; });
5. 确认Locale代码的准确性
Angular的本地化文件中,es对应的文件确实是angular-locale_es.js,但如果还是找不到,可以尝试使用更具体的locale代码,比如es-ES(对应文件angular-locale_es-es.js),调用时改成:
tmhDynamicLocale.set('es-ES');
内容的提问来源于stack exchange,提问作者user3725901
相关产品推荐
相关产品推荐

