node.js - 如何找出在 ember fastboot 中运行应用程序时发生错误的原因
问题描述
我正在尝试将第三方 npm 库(如 npm 包之类的编辑器npm i @editorjs/editorjs --save-dev
)集成到具有自动加载功能的 ember 应用程序中"ember-auto-import": "^1.5.3",
没有快速启动一切正常,但在快速启动应用程序崩溃并出现以下错误:
nodejs_1 | TypeError: Cannot read property 'syscall' of null
nodejs_1 | at AppendOpcodes.evaluate (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@glimmer/runtime.js:2003:1)
nodejs_1 | at LowLevelVM.evaluateSyscall (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@glimmer/runtime.js:4923:1)
nodejs_1 | at LowLevelVM.evaluateInner (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@glimmer/runtime.js:4879:1)
nodejs_1 | at LowLevelVM.evaluateOuter (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@glimmer/runtime.js:4871:1)
nodejs_1 | at JitVM.next (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@glimmer/runtime.js:5815:1)
nodejs_1 | at TemplateIteratorImpl.next (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@glimmer/runtime.js:5944:1)
nodejs_1 | at RootState.render (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@ember/-internals/glimmer/index.js:8771:1)
nodejs_1 | at runInAutotrackingTransaction (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@glimmer/validator.js:106:1)
nodejs_1 | at /tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@ember/-internals/glimmer/index.js:9069:1
nodejs_1 | at inTransaction (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@glimmer/runtime.js:1959:1)
nodejs_1 | at InertRenderer._renderRoots (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@ember/-internals/glimmer/index.js:9043:1)
nodejs_1 | at InertRenderer._renderRootsTransaction (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@ember/-internals/glimmer/index.js:9104:1)
nodejs_1 | at InertRenderer._revalidate (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@ember/-internals/glimmer/index.js:9146:1)
nodejs_1 | at invokeWithOnError (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:347:1)
nodejs_1 | at Queue.flush (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:229:1)
nodejs_1 | at DeferredActionQueues.flush (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:426:1)
nodejs_1 | at Backburner._end (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:960:1)
nodejs_1 | at Backburner.end (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:710:1)
nodejs_1 | at Backburner._run (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:1009:1)
nodejs_1 | at Backburner._join (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:989:1)
nodejs_1 | at Backburner.join (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:760:1)
nodejs_1 | at Array.loopEnd (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@ember/-internals/glimmer/index.js:8888:1)
nodejs_1 | at Backburner._trigger (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:1084:1)
nodejs_1 | at Backburner._end (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:979:1)
nodejs_1 | at Backburner.end (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:710:1)
nodejs_1 | at Backburner._run (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:1009:1)
nodejs_1 | at Backburner._join (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:989:1)
nodejs_1 | at Backburner.join (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:760:1)
nodejs_1 | at Array.loopEnd (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@ember/-internals/glimmer/index.js:8888:1)
nodejs_1 | at Backburner._trigger (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:1084:1)
nodejs_1 | at Backburner._end (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:979:1)
nodejs_1 | at Backburner.end (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:710:1)
nodejs_1 | at Backburner._run (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:1009:1)
nodejs_1 | at Backburner._join (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:989:1)
nodejs_1 | at Backburner.join (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/backburner.js:760:1)
nodejs_1 | at Function.join (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/@ember/runloop/index.js:168:1)
nodejs_1 | at Object.hash.success (/tmp/broccoli-1Awdijh61s6pE/out-475-append_ember_auto_import_analyzer/assets/addon-tree-output/@ember-data/adapter/rest.js:919:1)
nodejs_1 | at fire (/app/node_modules/jquery-deferred/lib/jquery-callbacks.js:78:30)
nodejs_1 | at Object.fireWith (/app/node_modules/jquery-deferred/lib/jquery-callbacks.js:188:7)
nodejs_1 | at Object.fire [as resolve] (/app/node_modules/jquery-deferred/lib/jquery-callbacks.js:195:10)
nodejs_1 | at dataHandler (/app/node_modules/najax/lib/najax.js:167:13)
nodejs_1 | at IncomingMessage.<anonymous> (/app/node_modules/najax/lib/najax.js:198:9)
nodejs_1 | at IncomingMessage.emit (events.js:322:22)
nodejs_1 | at IncomingMessage.EventEmitter.emit (domain.js:482:12)
nodejs_1 | at endReadableNT (_stream_readable.js:1187:12)
nodejs_1 | at processTicksAndRejections (internal/process/task_queues.js:84:21)
fastboot
模式检查就像this.fastboot.isFastBoot
不能解决问题一样,即使我只是 import 看起来也会抛出错误@editorjs/editorjs
。也许有人遇到过,所以准备好任何信息来获得挖掘的方向。
创建组件示例:
import Component from '@ember/component';
import EditorJS from '@editorjs/editorjs';
import { inject as service } from '@ember/service';
export default Component.extend({
fastboot: service(),
didInsertElement() {
if (!this.fastboot.isFastBoot) {
const editor = new EditorJS({
holder: this.elementId
});
}
}
});
环境:
DEBUG: -------------------------------
index.js:194 DEBUG: Ember : 3.18.0
index.js:194 DEBUG: Ember Data : 3.17.0
index.js:194 DEBUG: jQuery : 3.5.0
index.js:194 DEBUG: Ember Bootstrap : 2.8.1
index.js:194 DEBUG: -------------------------------
更新:
看起来像第三方 npm 库中的问题,原因didInsertElement
不应该在所有fastboot
作为解决方法,我将此库添加为incompatible JavaScript
app.import('vendor/fastboot-incompatible.js', {
using: [
{
transformation: 'fastbootShim'
}
]
});
看起来这种方法可以解决问题。但无论如何,这个问题仍然是我想了解崩溃原因的实际原因,在这个错误之后fastboot
需要重新加载并且不能更多地工作。预期的行为 - 一些没有完全崩溃的错误。
解决方案
推荐阅读
- reactjs - 测试具有 api 调用的 redux-saga 函数
- python - 如何为正整数场设置最大值
- java - FCM 无效的主题名称。Base64 生成带有无效字符的字符串
- c# - 获取错误消息未找到存储过程
- powerbi - 如何在 Power BI 中使用已知结束日期将项目小时数除以项目长度
- node.js - 访问公牛队列以查看来自 nodejs 的作业统计信息
- ios - 使结构可编码/可解码而不仅仅是可编码,是否有任何性能优势?
- delphi - 在某个列中的记录发生变化的 dbgrid 中减去多个值
- forms - 不可见的 reCAPTCHA javascript
- java - 在 Jenkins 文件夹上进行自动化测试以供下载时,未创建