未捕获的TypeError:this._input.charCodeAt不是函数

时间:2016-09-14 13:10:39

标签: angular webpack angular2-cli

我使用Angular 2 CLI创建了一个Angular 2项目并使用了ng build --prod命令并且没有错误。

当我将dist文件夹上传到我的网站时,我在应用加载时收到以下错误:

enter image description here

Uncaught TypeError: this._input.charCodeAt is not a function_Tokenizer._advance @ main .688167 c….bundle.js: 1716 _Tokenizer @ main .688167 c….bundle.js: 1716 tokenize @ main .688167 c….bundle.js: 1709 Parser.parse @ main .688167 c….bundle.js: 219 HtmlParser.parse @ main .688167 c….bundle.js: 380 DirectiveNormalizer.normalizeLoadedTemplate @ main .688167 c….bundle.js: 598 DirectiveNormalizer.normalizeTemplateSync @ main .688167 c….bundle.js: 598 DirectiveNormalizer.normalizeDirective @ main .688167 c….bundle.js: 598 RuntimeCompiler._createCompiledTemplate @ main .688167 c….bundle.js: 1090(anonymous
function) @ main .688167 c….bundle.js: 1090(anonymous
function) @ main .688167 c….bundle.js: 1090 RuntimeCompiler._compileComponents @ main .688167 c….bundle.js: 1090 RuntimeCompiler._compileModuleAndComponents @ main .688167 c….bundle.js: 1090 RuntimeCompiler.compileModuleAsync @ main .688167 c….bundle.js: 1090 PlatformRef_._bootstrapModuleWithZone @ main .688167 c….bundle.js: 717 PlatformRef_.bootstrapModule @ main .688167 c….bundle.js: 717(anonymous
function) @ main .688167 c….bundle.js: 1509 __webpack_require__ @ inline.js: 1(anonymous
function) @ main .688167 c….bundle.js: 2131 __webpack_require__ @ inline.js: 1 window.webpackJsonp @ inline.js: 1(anonymous
function) @ main .688167 c….bundle.js: 1

我正在使用最新的Angular 2 CLI和webpack以及Angular 2 RC.7

可能出了什么问题?

this._input.charCodeAt仅用于角度编译器文件夹,如下所示: enter image description here

3 个答案:

答案 0 :(得分:46)

可能是由加载组件代码而不是模板引起的,即

templateUrl: 'my.component'

而不是

templateUrl: 'my.component.html'

答案 1 :(得分:1)

原始加载程序已更改。需要xlf文件时,必须使用 .default

const translations = require('raw-loader!./i18n/messages.ko.xlf').default;

在我的角度项目中将@ ngx-translate / i18n-polyfill更新为1.0.0版本时,我遇到了同样的问题。当我实施上述更改时,问题已解决

引用:ngx-translate/i18n-polyfill Issue#60

答案 2 :(得分:0)

以下调试代码帮助我找到了错误导入的模板。

将下一个代码段注入_Tokenizer(或其他使用的捆绑包)中编译器的./node_modules/@angular/compiler/bundles/compiler.umd.js

function _Tokenizer(_file, _getTagDefinition, _tokenizeIcu, _interpolationConfig) {
    // ...
    try {
        this._advance();
    } catch (e) {
        console.log('[Tokenizer Error]: ' + _file && JSON.stringify(_file, null, 2));
        throw e;
    }
}

以屏幕截图为例:

enter image description here