调试:npm ERR!code ELIFECYCLE npm ERR!errno 1

5

请问如何调试这个编译错误:

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! ******@1.1.0 dev: `NODE_ENV=development ts-node ./src/server.ts`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the ******@1.1.0 dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:

当运行 ts-node ./src/server.ts node build/server.js 时会出现此问题。

tsc没有错误。

tsconfig.json

{
   "compilerOptions": {
      "lib": [
         "es2018",
         "dom",
         "esnext.asynciterable"
      ],
      "target": "es2018",
      "module": "commonjs",
      "outDir": "build",
      "emitDecoratorMetadata": true,
      "experimentalDecorators": true,
      "esModuleInterop": true,
      "sourceMap": false,
      "rootDirs": ["src", "../shared"]
//      "rootDir": "src"
   },
   "exclude": [
      "node_modules",
      "**/*.spec.ts",
      "**/*.test.ts"
   ],
   "references": [
      { "path": "../shared" }
   ]
}

我在tsconfig中做了一些更改,导致一些导入失败。然而,代码库非常庞大,我真的需要找到导致错误的确切代码行。特别令人困惑的是,tsc没有出现错误。
更新:
问题出在某些导入上,已经修复。但是又遇到了类似的问题。知道当前问题的原因--由于某种原因,来自共享项目的导入(例如https://www.typescriptlang.org/docs/handbook/project-references.html)未加载(尽管它们在其他模块中工作,而且tsconfig.json与其他模块相同)。没有特定的错误,只有这个:npm ERR!code ELIFECYCLE npm ERR!errno 1
问题:
然而,这个主题的主要问题不是解决特别的问题,而是如何调试这种导入问题,在所有可用的日志基本上都是npm ERR!code ELIFECYCLE npm ERR!errno 1的情况下。我周期性地遇到这种问题,每次解决都需要很长时间,因为我所知道的唯一调试方法就是注释可能与可能失败的导入相关联的代码块,有时这个过程可能需要数小时。

是的,我尝试遵循那里的建议,但并没有帮助。 - user1935987
如果你正在尝试在Windows上执行此操作,它将无法工作。请使用包cross-env来完成此操作。 - darklightcode
你尝试在命令行中添加 "d" 吗?例如:-d, -dd 或者甚至是 -ddd? 或者你可以在 TypeScript 的 compilerOptions 上添加 diagnostics, extendedDiagnostics - Marinos An
1
大多数情况下,在此输出之前的控制台输出定义了错误。但是,如果没有,请查看npm在错误时生成的日志文件。该位置也会在“npm ERR!完整运行日志可以在以下位置找到:”之后显示。 - Mert
1
目前还没有针对编译的调试工具。虽然他们已经在计划中了,但是尚未开始开发。 - Akxe
显示剩余8条评论
4个回答

4

我首先解决了这个问题,删除package-lock.json文件, 然后在控制台上输入以下命令: - npm test
(如果npm安装没有任何问题,那么问题可能出现在服务器上)

  • npm install -g serve
  • npm run build

问题已经解决了... 如果你想使用本地服务器,只需要输入以下命令:

  • serve -s build 就这样- 祝你好运 :)

可能这可以解决你的问题,但我更广泛的问题是如何调试这种情况。解决方案是使用NODE_DEBUG=*标志。 - user1935987

1

我建议从调试编译的脚本开始(不要缩小),因为它会删除输入和结果之间的一些中间步骤。以下是我调试这些问题的多种方法:

  • 首先,我建议尝试使用NODE_DEBUG标志进行实验,例如:NODE_DEBUG=module node build/server.js 如果你怀疑问题与模块加载有关。
  • 您可以尝试 node --inspect-brk build/server.js 并启动检查器来逐步执行它(例如在 Chrome 中)。如果您的代码实际上已经加载,这将非常有帮助,但有时也可以帮助自定义加载程序。

0
基于 @Porcellus 的答案,可以通过 NODE_DEBUG=* 标志来解决这个问题 => 显示丢失模块的完整堆栈跟踪。

0

正如您所述,日志没有很详细的信息,因此我不会花费精力去找出如何调试一个缺乏详细信息的日志文件,而是我会找出如何修改我的项目,使其在每个主要步骤之后记录更详细的日志,这样如果它在某个时刻失败,您将看到成功执行了什么,运行了哪些状态,并且您将不会从崩溃点开始看到已经计划好的日志。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接