gpt4 book ai didi

javascript - 你如何在 Nuxt.js 中导入 three.js OBJLoader? "Cannot use import statement outside a module"

转载 作者:行者123 更新时间:2023-12-02 16:39:49 25 4
gpt4 key购买 nike

完全菜鸟,需要帮助。

系统:Win 10。浏览器 Chrome。框架:Nuxt,默认配置

我通过 npm(通过 gitbash)使用 npm install three --save 安装了 three.js。它在 package.json 依赖项中作为 "three": "^0.116.1",。我在 ~/assets/中保存了一个 scene.json 文件,该文件是使用 three.js editor 生成的> 导出场景。

无论是否使用 type="module"

,我都会收到错误消息“无法在模块外使用 import 语句”

这是我正在使用的 Vue 组件:(它仅呈现为客户端。)

<template>
<div id="Three">
<div id="threeContainer"></div>
</div>
</template>

<script type="module">
import * as Three from 'three'
import OBJLoader from 'three/examples/jsm/loaders/OBJLoader.js'

export default {
name: 'Three',
data() {
return {
camera: null,
scene: null,
renderer: null,
mesh: null
}
},
mounted() {
this.init()
},
methods: {
init() {
const container = document.getElementById('threeContainer')

this.camera = new Three.PerspectiveCamera(
70,
container.offsetWidth / container.offsetHeight,
0.01,
10
)
this.camera.position.z = 1

this.scene = new Three.Scene()

const loader = new OBJLoader()
loader.load(
'~/assets/scene.json',
function(obj) {
this.scene.add(obj)
},
function(xhr) {
console.log((xhr.loaded / xhr.total) * 100 + '% loaded')
},
function(err) {
console.error(err.stack)
}
)

this.renderer = new Three.WebGLRenderer({ antialias: true })
this.renderer.setSize(container.clientWidth, container.clientHeight)
container.appendChild(this.renderer.domElement)
}
}
}
</script>

<style lang="scss">
#threeContainer {
height: 300px !important;
background: black;
}
</style>

最佳答案

您需要转译 three.js ES6 模块文件。

将此行添加到 nuxt.config.js 文件中:

build:{
transpile:["three"]
}

关于javascript - 你如何在 Nuxt.js 中导入 three.js OBJLoader? "Cannot use import statement outside a module",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61922589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com