错误"系统未定义(...)"国际化(I18N),angular-cli

时间:2016-11-22 14:08:40

标签: angular

我试图用JiT和angular-cli学习这个tutorial。我在浏览器控制台中遇到以下错误,但终端没有错误来运行/构建应用程序。

未捕获的ReferenceError:系统未定义(...)

未捕获错误:找不到模块' ./ locale / messages.fr.xlf!text'。(...)

enter image description here

我的代码在github https://github.com/sayedrakib/internationalization_project.git

根据教程中的说明,我在根文件夹中添加了systemjs-text-plugin.js。 文件结构 enter image description here

我想我在某些文件中搞砸了文件路径,因为我觉得教程中的假定文件结构和angular-cli创建的文件结构不一样。

2 个答案:

答案 0 :(得分:2)

我可以看到你正在使用angular-cli,而不是你想要加载3party libery,你需要使用angular-cli.json文件。

首先在您的应用目录npm install systemjs运行 其次,您需要在angular-cli.json文件中添加systemjs的路径。

"scripts": [
    "../node_modules/systemjs/dist/system.js"
  ]

如果你需要加载其他3方教程,只需重复2个阶段。

答案 1 :(得分:1)

花了我很多时间来弄清楚这一点!

如果您按照文档进行操作,请更改:

  1. 下载system.js,但它在root(/ app)中,然后在脚本标记之前导入。
  2. 在index.html中删除System.import('app')
  3. 重命名从System到SystemJS的所有内容(index.html,i18n-provide.ts)
  4. 最后它看起来像这样:

    的index.html

    <body>
      <app-root>Loading...</app-root>
    
      <script src="system.js"></script>
      <script>
        // Get the locale id somehow
        document.locale = 'es';
    
        // Map to the text plugin
        SystemJS.config({
          map: {
            text: 'systemjs-text-plugin.js'
          }
        });
      </script>
    </body>
    

    I18N-providers.ts

    export function getTranslationProviders(): Promise<Object[]> {
       [...]
    }
    
    declare let SystemJS: any;
    
    function getTranslationsWithSystemJs(file: string) {
      return SystemJS.import(file + '!text'); // relies on text plugin
    }
    

    我打开了GitHub Issue来更新文档。