ES6 bare module 를 로 컬 프로그램 에 어떻게 도입 하 는 지, 3DTilesRendererJS 통합 문제 해결 방안 탐색
git+https://github.com/NASA-AMMOS/3DTilesRendererJS.git 관련 코드
시범 코드 를 실행 할 때 다음 과 같은 문제 가 발생 합 니 다.
“Uncaught SyntaxError: Cannot use import statement outside a module”
인용 파일 이 class 를 도 입 했 기 때문에 ES6 에서 module 에서 정 의 된 개념 으로 script 에 추가 해 야 합 니 다. type = "module" 만 브 라 우 저가 스 크 립 트 를 정확하게 해석 할 수 있 습 니 다. 다음 과 같 습 니 다.
< p > 브 라 우 저 는 스 크 립 트 를 분석 할 수 있 지만, 이어서 실행 하면 다음 과 같은 오류 가 발생 합 니 다 < / p >
“Uncaught SyntaxError: Cannot use import statement outside a module” when importing ECMAScript 6”
:
< p > 제3자 에서 ES6 모듈 을 가 져 올 때 브 라 우 저 로 만 동기 화 할 수 없습니다. < /p>
< p > import 를 사용 하여 관련 모듈 을 가 져 올 때 bare 를 사 용 했 기 때 문 입 니 다. import, 예: < / p >
import { LineSegments, BufferGeometry, Vector3, BufferAttribute, LineBasicMaterial } from 'three';
< p > 예: 위 에서 가 져 온 'three', < / p >
bare import 는 웹 팩 과 같은 묶음 기 를 사용 할 때 흔히 볼 수 있 는 가 져 오기 입 니 다. node modules 의 상대 경 로 를 가리 키 는 것 이 아니 라 포장 발표 경 로 를 표시 합 니 다. 예 를 들 어 웹 팩 포장 을 통 해 발 표 된 후 정상적으로 작업 할 수 있 습 니 다. 단, 브 라 우 저 에서 직접 실행 하면 < / p > 를 볼 수 있 습 니 다.
Uncaught TypeError: Failed to resolve module specifier "three". Relative references must start with either "/", "./", or "../".
< h2 > 솔 루 션: < / h2 >
< h3 > 1) 온라인 라 이브 러 리 를 직접 참조 합 니 다. 일부 라 이브 러 리 는 온라인 패키지 로 발 표 된 주소 가 있 습 니 다. < / h3 >
import * from "https://code.jquery.com/jquery-3.1.1.min.js"
< h3 > 2) 웹 팩 으로 포장 합 니 다. 이것 은 비교적 번 거 롭 습 니 다 < / h3 >
-
`npm install --save-dev webpack webpack-cli copy-webpack-plugin webpack-dev-server `
-
Create
webpack.config.js
:const path = require('path'); const CopyPlugin = require('copy-webpack-plugin'); module.exports = { entry: './src/app.js', mode: 'development', output: { path: path.resolve(__dirname, 'dist'), filename: 'app.js' }, devServer: { contentBase: './dist' }, plugins: [ new CopyPlugin([ { from: 'src/index.html', to: './' }, { from: 'src/style.css', to: './' }, ]), ], };
-
Add a script to the
package.json
:"dev": "webpack-dev-server --open"
-
The import can now look like this:
import { html, LitElement } from 'lit-element/lit-element.js';
Run the dev-server with live-reload (similar to browser-sync) with npm run dev
.
After trying it for a small application and really only doing the bare minimum with Webpack, I have to say it is a viable option. But it requires to download some dependencies from NPM and create a webpack.config.js
.
3)Open Web Components (OWC)
Open Web Components offer a simple dev-server that does nothing more than rewrite the bar module imports to relative imports.
npm install --save-dev owc-dev-server
After trying it out, I was disappointed to find that the dev-server does not offer live-reloading.
The best solution I found was to combine it with browser-sync. Here are the scripts I added to my package.json
"dev": "owc-dev-server | npm run watch",
"watch": "browser-sync start -f src/ --proxy localhost:8080 --startPath src",
Note that watch
is just a helper-script used by dev
; so you have to use npm run dev
.
4)Polymer-cli
The last tool I tried was Polymer-CLI. In the end, the approach is a mix between the previous two. It requires an additional polymer.json
config-file and it also does not function without browser-sync.
The steps are:
-
npm install --save-dev polymer-cli
-
Create
polymer.json
:{ "entrypoint": "src/index.html", "shell": "src/app.js", "npm": true }
-
Set up scripts:
"watch": "browser-sync start -f src/ --proxy localhost:8000 --startPath src", "dev": "polymer serve --open-path src/index.html | npm run watch"
< p > 이상 의 이 방법 들 은 참고 할 수 있 습 니 다.http://dplatz.de/blog/2019/es6-bare-imports.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
vue 입문 vue 와 react 와 Angular 의 관계 와 차이vue 의 목 표 는 가능 한 한 간단 한 API 를 통 해 '응답 하 는 데이터 바 인 딩' 과 '조 합 된 보기 구성 요소' 를 실현 하 는 것 입 니 다. 4) vue 와 angular 바 인 딩 은 모두 {{...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.