समस्या हल करने के लिए मार्गदर्शिकाएं

समस्या हल करने के लिए मार्गदर्शिकाएं

इस पृष्ठ में सबसे आम गलतियां शामिल हैं जो उपयोग के दौरान होती हैं। @aspose/3d TypeScript और Node.js परियोजनाओं में, जड़-कस की व्याख्याओं और सत्यापित सुधारों के साथ।.


Module Error के बारे में जानकारी

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

रूट कारण: संकलित JavaScript के साथ चल रहा है require() सेमैंटिक लेकिन आउटपुट में ई मॉड्यूल होता है 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 स्टेनलेस है।.

फिक्स करें:

asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.

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

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}`);

सामग्री सूची ओबीजे लोड के बाद खाली है

रूट कारण: सामग्री लोड डिफ़ॉल्ट रूप से अक्षम है 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 त्रुटियों और I / O तंत्र की समस्याएं

openFromBuffer एक अनदेखा फ़ॉर्मेट त्रुटि को फेंक देता है

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

निदान:

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');

टाइपस्क्रिप्ट संकलन त्रुटियां

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. टाइपस्क्रिप्ट सख्त मोड आपको शून्य मामले को संभालने की आवश्यकता है।.

फिक्स करें:

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 Sub-Path Module में है। @aspose/3d/formats/gltf,न तो पैकेज रूट है।.

फिक्स करें: उप-मार्ग से आयात:

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

स्मृति और प्रदर्शन के मुद्दे

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

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

फिक्स करें: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
}

देखें भी

 हिन्दी