समस्या निवारण गाइड्स

समस्या निवारण गाइड्स

यह पृष्ठ उपयोग करते समय मिलने वाली सबसे सामान्य त्रुटियों को कवर करता है @aspose/3d TypeScript और Node.js प्रोजेक्ट्स में, मूल कारण की व्याख्याओं और सत्यापित समाधान के साथ।.


मॉड्यूल रिज़ॉल्यूशन त्रुटियाँ

Error: Cannot find module '@aspose/3d/formats/obj'

मूल कारण: TypeScript की मॉड्यूल रिज़ॉल्यूशन रणनीति Node.js-शैली के सब-पाथ एक्सपोर्ट्स को समर्थन नहीं देती (exports में package.json) जब तक नहीं moduleResolution को सेट किया गया है node या node16.

समाधान: सेट करें moduleResolution को "node" अपने tsconfig.json:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "strict": true
  }
}

यदि आप TypeScript 5.x के साथ उपयोग कर रहे हैं "module": "node16" या "module": "nodenext", उपयोग करें "moduleResolution": "node16" मेल खाने के लिए।.


SyntaxError: Cannot use import statement in a module

मूल कारण: संकलित जावास्क्रिप्ट को चलाया जा रहा है require() सेमांटिक्स लेकिन आउटपुट में ES मॉड्यूल import सिंटैक्स; यह तब होता है जब module को सेट किया गया है es2020 या esnext लेकिन Node.js रनटाइम CommonJS की अपेक्षा करता है।.

समाधान: उपयोग करें "module": "commonjs" में tsconfig.json और संकलित को चलाएँ .js फ़ाइलों को … के साथ node सीधे:

{
  "compilerOptions": {
    "module": "commonjs",
    "outDir": "./dist"
  }
}

फिर संकलित करें और चलाएँ:

npx tsc
node dist/main.js

Error: Cannot find module '@aspose/3d'

मूल कारण: पैकेज स्थापित नहीं है, या node_modules : पुराना है।.

: सुधारें:

npm install @aspose/3d

स्थापना की जाँच करें:

node -e "const { Scene } = require('@aspose/3d'); console.log('OK', new Scene().constructor.name);"

लोड करने के बाद खाली सीन

: सीन लोड होता है लेकिन rootNode.childNodes : खाली है

: मूल कारण (1): फ़ाइल फ़ॉर्मेट सभी ज्योमेट्री को सीधे (पर) रखता है rootNode.entity : बच्चा नोड्स के रूप में नहीं रखता है। यह सिंगल‑मेश STL फ़ाइलों में सामान्य है।.

: निदान:

import { Scene, Mesh } from '@aspose/3d';

const scene = new Scene();
scene.open('model.stl');

// Check rootNode directly
if (scene.rootNode.entity) {
    console.log(`Root entity: ${scene.rootNode.entity.constructor.name}`);
}
console.log(`Child count: ${scene.rootNode.childNodes.length}`);

: सुधारें: शुरू से ट्रैवर्स करें scene.rootNode : स्वयं, केवल उसके बच्चों को नहीं:

function visit(node: any): void {
    if (node.entity instanceof Mesh) {
        const m = node.entity as Mesh;
        console.log(`Mesh: ${m.controlPoints.length} vertices`);
    }
    for (const child of node.childNodes) {
        visit(child);
    }
}
visit(scene.rootNode);

: मूल कारण (2): फ़ाइल पथ गलत है या फ़ाइल शून्य बाइट्स की है। कॉल करने से पहले जांचें कि फ़ाइल मौजूद है और खाली नहीं है। open().

import * as fs from 'fs';

const path = 'model.obj';
if (!fs.existsSync(path)) throw new Error(`File not found: ${path}`);
const stat = fs.statSync(path);
if (stat.size === 0) throw new Error(`File is empty: ${path}`);

OBJ लोड करने के बाद मैटेरियल्स सूची खाली है

: मूल कारण: डिफ़ॉल्ट रूप से सामग्री लोडिंग अक्षम है ObjLoadOptions.: लाइब्रेरी जियोमेट्री को बिना पढ़े लोड करती है .mtl : साइडकार फ़ाइल।.

समाधान: सेट करें enableMaterials = true:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
scene.open('model.obj', opts);

साथ ही सुनिश्चित करें कि .mtl फ़ाइल उसी निर्देशिका में है जैसा कि .obj फ़ाइल, क्योंकि लाइब्रेरी इसे सापेक्ष रूप से हल करती है .obj पथ।.


फ़ॉर्मेट और I/O त्रुटियाँ

openFromBuffer एक अपरिचित फ़ॉर्मेट त्रुटि फेंकता है

मूल कारण: बफ़र सामग्री एक पहचानने योग्य बाइनरी फ़ॉर्मेट नहीं है, या बफ़र भ्रष्ट है (कटा हुआ, गलत एन्कोडिंग, या कच्चे बाइट्स के बजाय base64)।.

निदान:

const buffer = fs.readFileSync('model.glb');
console.log('Buffer size:', buffer.length, 'bytes');
console.log('First 4 bytes (hex):', buffer.slice(0, 4).toString('hex'));
// GLB magic: 676c5446 ("glTF")
// STL binary starts with 80 bytes of header; no fixed magic
// OBJ is text: openFromBuffer may not detect format

समाधान: टेक्स्ट-आधारित फ़ॉर्मेट्स (OBJ, COLLADA) के लिए, फ़ॉर्मेट का संकेत देने हेतु उपयुक्त विकल्प क्लास पास करें:

import { ObjLoadOptions } from '@aspose/3d/formats/obj';
scene.openFromBuffer(buffer, new ObjLoadOptions());

आउटपुट GLB 3D व्यूअर्स में JSON के रूप में खुलता है

मूल कारण: GltfSaveOptions.binaryMode डिफ़ॉल्ट रूप से false, उत्पन्न करता है .gltf JSON आउटपुट, यहाँ तक कि जब आउटपुट फ़ाइलनाम है .glb.

समाधान: स्पष्ट रूप से सेट करें binaryMode = true:

import { GltfSaveOptions } from '@aspose/3d/formats/gltf';

const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('output.glb', opts);

STL आउटपुट में स्लाइसर में कोई रंग या सामग्री डेटा नहीं होता है

मूल कारण: STL फ़ॉर्मेट अपने मानक विनिर्देश में सामग्री या रंग का समर्थन नहीं करता है। रंग-सक्षम स्लाइसर स्वामित्व वाले एक्सटेंशन का उपयोग करते हैं जो द्वारा समर्थित नहीं हैं @aspose/3d.

समाधान: इसके बजाय 3MF में निर्यात करें, जो रंग और सामग्री मेटाडेटा का समर्थन करता है:

scene.save('output.3mf');

TypeScript संकलन त्रुटियाँ

Property 'controlPoints' does not exist on type 'Entity'

मूल कारण: Entity बेस क्लास है; Mesh ज्यामिति गुणों वाला ठोस प्रकार है। आपको एक instanceof मेश-विशिष्ट सदस्यों तक पहुँचने से पहले गार्ड चाहिए।.

समाधान:

import { Mesh } from '@aspose/3d';

if (node.entity instanceof Mesh) {
    const mesh = node.entity as Mesh;
    console.log(mesh.controlPoints.length);
}

Type 'null' is not assignable to type 'Node'

मूल कारण: getChildNode() वापस देता है Node | null. TypeScript सख्त मोड आपको null केस को संभालने की आवश्यकता रखता है।.

समाधान:

const child = node.getChildNode('wheel');
if (!child) throw new Error('Node "wheel" not found');
// child is now Node, not null

Cannot find name 'GltfSaveOptions'

मूल कारण: GltfSaveOptions सब-पाथ मॉड्यूल में है @aspose/3d/formats/gltf, पैकेज रूट नहीं है।.

समाधान: सब-पाथ से इम्पोर्ट करें:

import { GltfSaveOptions } from '@aspose/3d/formats/gltf';

मेमोरी और प्रदर्शन संबंधी समस्याएँ

प्रक्रिया बड़े FBX फ़ाइलों के साथ मेमोरी समाप्त हो जाती है

मूल कारण: बहुत बड़े FBX फ़ाइलें (>200 MB) काफी हीप आवंटित करती हैं। Node.js का डिफ़ॉल्ट हीप 64-बिट सिस्टम पर लगभग 1.5 GB है लेकिन मल्टी‑सीन फ़ाइलों के लिए पर्याप्त नहीं हो सकता।.

समाधान: Node.js हीप आकार बढ़ाएँ:

node --max-old-space-size=8192 dist/convert.js

जब मेमोरी सीमित हो, तो फ़ाइलों को समानांतर के बजाय क्रमिक रूप से प्रोसेस करें:

for (const file of files) {
    const scene = new Scene();
    scene.open(file);
    scene.save(file.replace('.fbx', '.glb'));
    // scene goes out of scope; GC can reclaim
}

संबंधित देखें

 हिन्दी