【问题标题】:Angular2, SaxParser, sax.js, unexpected token `<`Angular2、SaxParser、sax.js、意外令牌`<`
【发布时间】:2016-06-29 07:46:31
【问题描述】:

我在 angular2 (typescript) 中使用 SaxParser (sax.js)。

设置类似于Stackoverflow: how to import sax parser into angular2 using typescript :

systemjs.config.js:

...
var map = {
  ...
  'sax':    'node_modules/sax'
};
var packages = {
  ...
  'sax':    { defaultExtension: 'js' }
};
...
var config = {
  map: map,
  ...
}
System.config(config);
...

在我的index.html 中我已经包含了

<script src="node_modules/sax/lib/sax.js"></script>

现在我已经创建了 saxParser.ts:

import { SAXParser } from 'sax';

export class SaxParser {
  parser;
  options = {
    lowercase: true,
    normalize: true,
    xmlns: true,
    position: true,
  }

  constructor() {
    this.parser = new SAXParser(true, this.options);
  }
}

在我的服务中使用它,例如:

someFunction() {
  ...
  let parser = new SaxParser();
  ...
}

现在我收到以下错误:

错误:SyntaxError: Unexpected token http://127.0.0.1:37420/app/saxParser/saxParser.js:2:13) 在评估 (http://127.0.0.1:37420/app/saxParser/saxParser.js:17:4) 在评估 (http://127.0.0.1:37420/app/saxParser/saxParser.js:18:3) 评估http://127.0.0.1:37420/node_modules/sax 评估http://127.0.0.1:37420/app/saxParser/saxParser.js 评估http://127.0.0.1:37420/app/services/parseXml.service.js 评估http://127.0.0.1:37420/app/services/parseXml.service.spec.js 加载错误http://127.0.0.1:37420/app/services/parseXml.service.spec.jsZoneDelegate.invoke@zone.js:323Zone.run@zone.js:216(匿名函数)@zone.js:571ZoneDelegate.invokeTask@zone.js:356Zone.runTask@zone.js:256drainMicroTaskQueue@zone.js: 474ZoneTask.invoke@zone.js:426

抛出此错误的代码行是:

var sax_1 = require('sax');

我不确定这是导入问题还是其他问题(因为意外的 &lt; )......有谁知道这个错误?又该如何解决呢?

谢谢!

【问题讨论】:

  • /// 在 boot .ts 中添加这个并尝试
  • @mayur 什么?你在哪里托管/开发这个?在 linux/mac 上?
  • 没有*.d.ts,只有sax.js,它似乎拥有所需的一切。我的main.ts 中的///&lt;reference path="../node_modules/sax/lib/sax.js"/&gt; 也出现同样的错误。
  • 为 TypeScript 编译器添加参考提示肯定无助于在浏览器中执行 JS。您在需要 JS 文件时得到一个“

标签: angular sax


【解决方案1】:

您可以尝试像这样修改您的systemjs.config.js 文件:

var map = {
  ...
  'sax':    'node_modules/sax/lib'
};
var packages = {
  ...
  'sax':    { main: 'sax.js', defaultExtension: 'js' }
};

【讨论】:

  • 现在我收到以下错误: > GET 127.0.0.1:46779/stream 404(未找到) > 错误:错误:XHR 错误(404 未找到)正在加载 127.0.0.1:46779/stream > GET 127.0.0.1:46779/string_decoder 404(未找到) )
  • 好像还少了几个包,sax依赖。 streamstring_decoderbufferemitter。只需像使用 sax 一样安装这些并设置地图/包。
  • 如果我添加 'sax': { defaultExtension: 'js' }, 'buffer': { defaultExtension: 'js' }, ... 那么我会得到同样的错误。如果我添加main: 'sax.js',那么我在string_decoder 中得到了意外的令牌&lt;。如果我将main: index.js 添加到'string_decoder': { defaultExtension: 'js' }, 我会收到一个错误,具体取决于buffer(等等)。如果我添加到 streamstring_decoderbufferemiter main: index.js,我会得到 404:asynclistutilieee754、base64-js` 和 @98765434@。 .
  • 是的,我遇到了同样的问题,没有深入研究,因为我不是 SystemJS 的专家。 :(
  • 好的,感谢您的尝试。 (y) 我已经在streamstring_decoderbufferemitternpm install -g 中完成了,但它没有帮助..
猜你喜欢
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 1970-01-01
相关资源
最近更新 更多