-1

これには本当に苦労します。ノード 14 (AWS Lamda) で ESM スクリプトを実行しようとしています。

このコードを実行して、3D オブジェクトを THREE JSON に変換しようとしています。

これはnode -r esm fbx2three.js model.fbx実行する必要があります。

このブログで見つけたこのアプローチでできると思います

すなわち

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()
}

コンパイル時にこのエラーで立ち往生しています

Object.defineProperty(exports, "__esModule", { value: true });

ReferenceError: exports is not defined

From converter.mjs:2:29

にコンパイルされた

"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"
  }
}

パッケージ

{
  "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"
  }
}
4

1 に答える 1

0

両方をfalseにしてみてください(または削除してください)、

  • esModuleInterop
  • allowSyntheticDefaultImports
于 2021-12-04T00:23:05.253 に答える