我在discord.js中创建了一个Self-Bot
,我创建了一个函数来创建一个类似的框:
╭──────────────────────╮
│ Title │
├──────────────────────┤
│ A message that was │
│ auto wrapped. │
╰──────────────────────╯
但是当我使用它时,我收到了这个错误: < ---最后几个GC --->
[5414:0x102801600] 34628 ms: Mark-sweep 1402.3 (1462.5) -> 1402.2 (1431.5) MB, 1428.1 / 0.0 ms (+ 0.0 ms in 0 steps since start of marking, biggest step 0.0 ms, walltime since start of marking 1431 ms) last resort
[5414:0x102801600] 35832 ms: Mark-sweep 1402.2 (1431.5) -> 1402.2 (1431.5) MB, 1203.7 / 0.0 ms last resort
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 0x1ecd007266a1 <JS Object>
2: prettiefy [/Users/adm/Desktop/Discord/Client/prettiefy.js:~3] [pc=0x115c254f97bd](this=0x1031bc4e25a1 <an Object with map 0x3b708c34aea1>,s=0x1031bc4e25d9 <an Object with map 0x3b708c34b161>)
3: run [/Users/adm/Desktop/Discord/Client/prettiefy.js:103] [pc=0x115c255b92d8](this=0x1031bc4e25a1 <an Object with map 0x3b708c34aea1>,str=0x1031bc4e2691 <String[17]: Message|Title|30 >,split=0...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::Abort() [/usr/local/bin/node]
2: node::FatalException(v8::Isolate*, v8::Local<v8::Value>, v8::Local<v8::Message>) [/usr/local/bin/node]
3: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/usr/local/bin/node]
4: v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/local/bin/node]
5: v8::internal::Runtime_AllocateInTargetSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
6: 0x115c2528ed46
Abort trap: 6
我不知道为什么会发生这种错误,这里是代码
const wrap = require ('wordwrap');
module.exports.prettiefy = s => { var _Result = '';
const _default = {
width: 25, // Prefered width if width is not defined
title: 0, // having the title as Int(0) will skip titlebar
message: 'Specify a message!', // Default message if message is not set
softCorners: true // if false it will not have rounded corners.
};
if (typeof s == 'object') {
if (s.width == undefined) s.width = _default.width;
if (s.title == undefined) s.title = _default.title;
if (s.softCorners == undefined || typeof s.softCorners !== 'boolean') s.softCorners = _default.softCorners;
if (s.message == undefined) s.message = _default.message;
} else if (typeof s == 'string') { s = {
width: _default.width,
title: _default.title,
message: s,
softCorners: _default.softCorners
}; } else { throw new Error('arg[0] be a typeof string or object') }
let _ = {
title: (typeof s.title == 'string' ? wrap(0, s.width, {mode:'hard'})(s.title).split('\n') : (typeof s.title == 'number' && s.title == 0 ? '\077' : '' + wrap(0, s.width, {mode: 'hard'})('' + s.title).split('\n')) ),
msg: wrap(0, s.width, {mode: 'hard'})(s.message).split('\n'),
corners: {
soft: ['╭', '╮', '╰', '╯'],
hard: ['┌', '┐', '└', '┘']
},
l: ['─', '│', '├', '┤'],
c: []
};
s.width += 1;
_.c = _.corners.soft;
if (!s.softCorners) _.c = _.corners.hard;
/* Line: 1 aka Start */
_Result += _.c[0] + _.l[0]; // Beginning: +-
for (i = 0; i < s.width; i++) _Result += _.l[0]; // Center: --
_Result += _.l[0] + _.c[1]; // End: -+
/* Line: 2 aka Title */
if (s.title !== '\077') {
for (T = 0; T < _.title.length; i++) {
_Result += _.l[1] + ' '; // Beginning: |\
for (i = 0; i < (s.width / 2) - (_.title.length / 2); i++) _Result += ' '; // Center: \
_Result += _.title; // Center: Message
for (i = 0.5; i < (s.width / 2) - (_.title.length / 2); i++) _Result += ' '; // Center: \
_Result += ' ' + _.l[1]; // End: \|
}
/* Line: 3 aka Title_Split */
_Result += _.l[2] + _.l[0]; // Beginning: |-
for (i = 0; i < s.width; i++) _Result += ' '; // Center: --
_Result += ' ' + _.l[2]; // End: -|
}
/* Line: 4 aka Message */
for (C = 0; C < _.msg.length; C++) {
_Result += _.l[2] + _.l[0]; // Beginning: |\
_Result += _.msg[C] // Center: Message
for (i = 0; i < s.width - _.msg[C].length; i++) _Result += ' '; // Center: \
_Result += ' ' + _.l[2]; // End: \|
}
/* Line 5 aka End */
_Result += _.c[2] + _.l[0]; // Beginning: +-
for (i = 0; i < s.width; i++) _Result += _.l[0];
_Result += _.l[0] + _.c[3]; // End: -+
// End;
return _Result;
};
module.exports.translate = function (str, Splitter = '|', Skipper = '/Skip/') {
if (typeof str !== 'string') str = '' + String(str);
var Res = {};
str = str.split(Splitter);
/*
Arg[0]: Message,
Arg[1]: Title,
Arg[2]: Width,
Arg[3]: softCorners
*/
if (str.length < 1) throw new Error('Need atleast one argument!');
if (str[0] !== undefined || str[0] == Skipper) Res.message = str[0];
if (str[1] !== undefined || str[1] == Skipper) Res.title = str[1];
if (str[2] !== undefined || str[2] == Skipper) Res.width = parseInt(str[2]);
if (str[3] !== undefined || str[3] == Skipper) Res.softCorners = str[3];
return Res;
}
module.exports.run = function (str, split) { return module.exports.prettiefy(module.exports.translate(str, split)); }
有没有人任何线索为何会发生这种情况?
我确实有32 GigaBytes的ram,我看到它是一个内存程序,但是为什么它在我有32GB并且它试图分配apx时崩溃。 1,5