Really struggling with this. I'm trying to run ESM scripts on Node 14 (AWS Lamda)
I'm trying to run this code to convert 3D objects to THREE JSON.
This requires node -r esm fbx2three.js model.fbx to run.
I think I can do it with this approach I found in this blog
i.e.
Index.ts
import Convert from './runner.js'
Runner.js
require = require("esm")(module);
module.exports = require("./converter.mjs").default;
Converter.mjs
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js'
export default function convertObj(url){
const loader = new OBJLoader()
const json = loader.parse(url).toJSON()
}
I'm now stuck on this error when it compiles
Object.defineProperty(exports, "__esModule", { value: true });
ReferenceError: exports is not defined
From converter.mjs:2:29
Which compiled to
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const OBJLoader_js_1 = require("three/examples/jsm/loaders/OBJLoader.js");
function convertObj(url) {
const loader = new OBJLoader_js_1.OBJLoader();
const json = loader.parse(url).toJSON();
}
exports.default = convertObj;
tsconfig
{
"compilerOptions": {
"outDir": "./bin",
"rootDir": "./src",
"lib": ["esnext"],
"target": "es6",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"noImplicitAny": false,
"module": "commonjs",
"allowJs": true,
"moduleResolution": "node"
}
}
Package
{
"name": "converter",
"version": "1.0.0",
"description": "",
"scripts": {
"update": "tsc && claudia update --handler bin/index.handler --timeout 60 --memory 1024",
"create": "tsc && claudia create --region ap-southeast-2 --handler bin/index.handler",
"pack": "tsc && claudia pack --api-module bin/index --force",
"test": "claudia test-lambda --event event.json"
},
"main": "bin/index",
"files": [
"bin/**/*.*",
"package.json"
],
"author": "",
"license": "ISC",
"dependencies": {
"esm": "^3.2.25",
"s3-unzip": "^0.1.13",
"three": "^0.135.0",
"typescript": "^4.5.2"
},
"devDependencies": {
"@types/node": "^16.11.11",
"babel-cli": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"claudia": "^5.14.0"
}
}
Try making both false (or remove),