Я начинаю новый проект, в котором я хотел бы иметь модули в стиле ES6, однако я не могу заставить его работать в браузере. Я использую Хром.
Я выделил проблему в несколько строк кода.
Вот мои 2 файла TypeScript:
app.ts
import { Component } from './component';
var component: Component = new Component();
component.ts
export class Component {
}
Вот как они компилируются в JavaScript:
app.js
import { Component } from './component';
var component = new Component();
component.js
export class Component {
}
Мой index.html содержит только тег скрипта. Я попробовал несколько вариантов, но ни один из них не сработал.
index.html #1
<script src="src/app.js" type="module"></script>
Скрипт не загружается. (Нет запроса на вкладке сети)
index.html #2
<script src="src/app.js" type=module></script>
Скрипт не загружается. (Нет запроса на вкладке сети)
index.html #3
<script src="src/app.js"></script>
Uncaught SyntaxError: неожиданный токен {
Я использую tsc для переноса TypeScript через код Visual Studio.
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "typescript",
"tsconfig": "tsconfig.json",
"problemMatcher": [
"$tsc"
],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "silent"
}
}
]
}
tsconfig.json
{
"compilerOptions": {
"target": "es6",
"sourceMap": false,
"removeComments": false,
"noImplicitReturns": true,
"noImplicitAny": true,
"preserveConstEnums": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"outDir": "../src/"
},
"exclude": [
"logs",
"node_modules"
]
}
<script type=‘module’ src=‘thing.js’>
- person Kokodoko   schedule 27.10.2018app.js
измените операторimport
на следующее:import { Component } from './component.js';
Примечание: расширение файла.js
было добавлено в спецификатор модуля. Синтаксис импорта ECMA-262 определяет только синтаксис модулей, а не конкретные механизмы их загрузки. Таким образом, требования для с или без суффикса.js
могут различаться в зависимости от реализации. Однако включение расширения файла.js
требуется в браузере Safari и, скорее всего, в Chrome. Кроме того, используйте<script src="src/app.js" type="module"></script>
в index.html. - person RobC   schedule 29.10.2018.mjs
в спецификаторе модуля (как уже отмечалось здесь), однако расширение файла.mjs
не работает с последней версией браузера Safari. - person RobC   schedule 29.10.2018