【问题标题】:Get error with "line.slice()" on "karma init"在“karma init”上出现“line.slice()”错误
【发布时间】:2018-05-11 04:25:17
【问题描述】:

我开始阅读“开发 AngularJS Edge”,我想设置各种正在使用的框架。

本书使用 nodejs 和 karma 以及其他几个框架。

我在 Win7x32 上。

我刚刚将我的 nodejs 升级到最新的 v0.10.18 。

我使用“npm install -g karma”安装了 Karma 包。这似乎成功完成。

然后我运行“karma init”,它这样做了:

    % karma init
> 
readline.js:507
  this.line = this.line.slice(this.cursor);
                        ^
TypeError: Cannot call method 'slice' of undefined
    at Interface._deleteLineLeft (readline.js:507:25)
    at suggestNextOption (C:\Users\David\AppData\Roaming\npm\node_modules\karma\lib\init.js:167:9)
    at nextQuestion (C:\Users\David\AppData\Roaming\npm\node_modules\karma\lib\init.js:235:12)
    at process (C:\Users\David\AppData\Roaming\npm\node_modules\karma\lib\init.js:250:10)
    at Object.exports.init (C:\Users\David\AppData\Roaming\npm\node_modules\karma\lib\init.js:352:6)
    at Object.<anonymous> (C:\Users\David\AppData\Roaming\npm\node_modules\karma\bin\karma:25:37)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

请注意,此错误实际上与一个月前 this person 报告的堆栈跟踪相同,但该报告未收到任何响应。

【问题讨论】:

  • 无法在 Windows 7 Ultimate(32 位和 64 位)上使用节点 0.10.18、业力 0.10.2 进行复制
  • 是否有任何我可以生成的其他诊断信息可以提供更有意义的信息?
  • 你是用 nodejs.org 的包安装的吗?

标签: javascript node.js karma-runner


【解决方案1】:

您可能正在使用 Git Bash 终端 MinTTY,它不完全支持 TTY。

您有 4 个选项来解决问题:

  1. 通过 Windows shell(默认的 Windows 控制台)使用 CMD 终端
  2. 通过 Bash shell 使用 CMD 终端(在 cmd 终端中执行 "C:\Program Files\Git\bin\bash.exe" --login -i
  3. 使用 Powershell(Windows 环境中通常默认安装的替代终端)
  4. 使用替代终端(或开发新终端:stuck_out_tongue_winking_eye:)

如果你只需要执行像karma init 这样的独立交互命令,我推荐option 1,然后再回到Git Bash。但是我会尝试使用 Powershell。

【讨论】:

    【解决方案2】:

    在 Cygwin 中运行 npm 出错的原因似乎是 npm 的一个已知问题。您可以使用此处提到的解决方法,

    https://stackoverflow.com/a/22436199/2390020

    【讨论】:

    • 是的,我忘记了这个问题。我很久以前就发现了这个解决方法。
    【解决方案3】:

    遇到同样的问题。试试这个

    节点 node_modules/karma/bin/karma init

    【讨论】:

      【解决方案4】:

      我在使用 MINGW64 时遇到了同样的错误。

      在默认命令提示符下正常运行。

      【讨论】:

        【解决方案5】:

        我没有提到的另一个可能的相关点是我从 Cygwin rxvt 窗口运行这些命令。

        我刚刚尝试完全卸载 nodejs 并重新安装它。

        当我再次打开 rxvt 窗口并运行“npm install -g karma”时,它失败了:

        /c/Program Files/nodejs/npm: line 2: $'\r': command not found
        /c/Program Files/nodejs/npm: line 4: $'\r': command not found
        /c/Program Files/nodejs/npm: line 5: syntax error near unexpected token `$'in\r''
        'c/Program Files/nodejs/npm: line 5: `case `uname` in
        

        这导致我在网上搜索那个错误,我发现了这个thread,这意味着它根本不支持 Cygwin(不幸的是,但不是一个大问题)。

        当我打开一个简单、丑陋、不友好的“cmd”窗口时,karma 安装和“karma init”都成功完成(或者至少它给了我“init”过程中的第一个问题)。

        【讨论】:

          【解决方案6】:

          就我而言,问题在于我在 Windows 中使用 git bash 终端。当我在 cmd 窗口中运行命令时,它运行良好。

          【讨论】:

            【解决方案7】:

            在 github shell 命令窗口中运行命令。为我工作。

            【讨论】:

              【解决方案8】:

              如果您打开 karma 文件,它只是一个节点脚本,因此执行它的另一种方法是:

              node karma init
              

              这在 MINGW64/git bash shell 中对我有用

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2020-12-12
                • 2017-09-08
                • 2016-06-24
                • 1970-01-01
                • 1970-01-01
                • 2019-06-03
                • 2016-02-11
                相关资源
                最近更新 更多