'错误:[$ parse:lexerr] Lexer错误:heroku部署上出现意外的下一个字符

时间:2014-03-01 13:39:39

标签: angularjs

我使用yeoman发生器写了一个角度应用程序。它在开发中运行良好,但在我部署到heroku并访问特定页面后,我收到此错误:

Error: [$parse:lexerr] Lexer Error: Unexpected next character  at columns 0-0 [\] in expression [\].
http://errors.angularjs.org/1.2.6/$parse/lexerr?p0=Unexpected%20nextharacter%20&p1=s%200-0%20%5B%5C%5D&p2=%5C
    at http://ang-news.herokuapp.com/scripts/244c37f5.vendor.js:3:30474
    at Zd.throwError (http://ang-news.herokuapp.com/scripts/244c37f5.vendor.js:6:14396)
    at Zd.lex (http://ang-news.herokuapp.com/scripts/244c37f5.vendor.js:6:13696)
    at $d.parse (http://ang-news.herokuapp.com/scripts/244c37f5.vendor.js:6:16445)
    at http://ang-news.herokuapp.com/scripts/244c37f5.vendor.js:5:13197
    at e.parseAs (http://ang-news.herokuapp.com/scripts/244c37f5.vendor.js:5:23401)
    at Object.e.(anonymous function) [as parseAsResourceUrl] (http://ang-news.herokuapp.com/scripts/244c37f5.vendor.js:5:23604)
    at http://ang-news.herokuapp.com/scripts/244c37f5.vendor.js:6:28873
    at q (http://ang-news.herokuapp.com/scripts/244c37f5.vendor.js:4:23046)
    at h (http://ang-news.herokuapp.com/scripts/244c37f5.vendor.js:4:19250) 

This description表示当表达式出现词汇错误时会发生错误。

这是什么,为什么它只出现在生产中?

11 个答案:

答案 0 :(得分:32)

我有些错误 使用 ng-click

<a ng-click="#/search/San+Francisco">test</a>

而不是 ng-href

<a ng-href="#/search/San+Francisco">test</a>

我希望它可以提供帮助

答案 1 :(得分:21)

如果您使用的是ng-pattern =&#39; / some_reg_ex /&#39;。请将其保存在某个范围变量中,例如$scope.emailPattern = '/email_regex/'

答案 2 :(得分:16)

在我的情况下,这是由正则表达式未被/括起来引起的,即。 ng-pattern="^[0-9]$"代替ng-pattern="/^[0-9]$/"

答案 3 :(得分:15)

通常,当在角度期待表达式或函数时提供字符串文字时,会发生这种情况。 A&#34;#&#34;在字符串中导致$parse:lexerr错误。

就我而言,当我应该使用表达式时,我正在将字符串文字设置为自定义指令属性。

<强>不正确

<my-directive my-attr="/foo#bar"></my-directive>

<强>正确

<my-directive my-attr="'/foo#bar'"></my-directive>

在此示例中,my-attr属性已设置为自定义my-directive中的双向绑定(=)。如果设置为&#34; @&#34;错误不会发生。

scope: {
  my-attr: "="
}

答案 4 :(得分:3)

@russenreaktor是对的,但更具体地说,当您使用不正确的语法时会发生此错误。对我来说,我不小心错位了$字符,用于角色,用#用于把手:

<button class="danger" type="button" title="Remove Property Asset {{#index}}">Remove Asset</button>

当然,修复#字符解决了我的问题:

<button class="danger" type="button" title="Remove Property Asset {{$index}}">Remove Asset</button>

答案 5 :(得分:2)

我遇到了ng-click问题。

ng-click="#"

我刚删除它,错误就消失了。

答案 6 :(得分:1)

在我的情况下是一个有#

的ng-show

为:

<a ng-show='#'>

最佳。

答案 7 :(得分:1)

作为字符串传递的参数不是有效的文字字符串:

ng-init('[aa]')

而不是

ng-init([aa])

答案 8 :(得分:1)

我使用

出现错误
<div ng-bind="{{vm.myModel}}"></div>

通过去除胡须来修复它:

<div ng-bind="vm.myModel"></div>

答案 9 :(得分:0)

当我的模型值surveyCtrl.user.googleEmailsomeone@gmail.com时,我在使用时遇到此错误:

ng-disabled="{{surveyCtrl.user.googleEmail}}"

条件有效:

ng-disabled="{{surveyCtrl.user.googleEmail != ''}}"

答案 10 :(得分:0)

在将选择选项与ng-value一起使用时出现此错误,因此我只保留value而不是ng-value属性。

<select>
    <option ng-repeat="employee in employees"
            title="{{employee.fullName}}"
            value="{{employee.email}}">
       {{employee.email}}
    </option>
</select>