ES6 + SystemJs - 为什么我必须使用 .js 扩展名来导入 es6 模块?
ES6 + SystemJs - why do I have to use the .js extension to import es6 module?
为什么我必须使用 .js 扩展名才能使用 systemjs 导入 es6 模块?例如:
import { multiplier } from "adder.js"; // ok
import { double, square } from 'modules'; // error
var timesTwo = multiplier(2);
console.log(timesTwo(4));
错误信息:
GET http://local-host/projects/es6/src/modules 404 (Not Found)Z @
system.js:4(anonymous function) @ system.js:4(anonymous function) @
system.js:4(anonymous function) @ system.js:5(anonymous function) @
system.js:5(anonymous function) @ system.js:5(anonymous function) @
system.js:5(anonymous function) @ system.js:5(anonymous function) @
system.js:5(anonymous function) @ system.js:4 system.js:4 Uncaught (in
promise) Error: Error: XHR error (404 Not Found) loading
http://local-host/projects/es6/src/modules(…)
这是我的 HTML 和 system.js:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ES2015 Module Example</title>
</head>
<body>
<script src="lib/system.js"></script>
<script>
System.config({
"baseURL": "src",
// 'plugin-babel' or 'traceur' or 'typescript'
transpiler: 'plugin-babel',
// or traceurOptions or typescriptOptions
babelOptions: {
},
map: {
'traceur': './lib/traceur.min.js',
'plugin-babel': './lib/plugin-babel/plugin-babel.js',
'systemjs-babel-build': './lib/plugin-babel/systemjs-babel-browser.js'
}
}
});
System.import("app.js");
</script>
</body>
</html>
有什么想法我错过了什么吗?
因为系统js没有在模块名后面追加.js
。一些模块加载器/打包器(Node、webpack 等)正在这样做,但是没有标准规定必须 完成。
有一个 configuration option 用于此,但它将被弃用。
为什么我必须使用 .js 扩展名才能使用 systemjs 导入 es6 模块?例如:
import { multiplier } from "adder.js"; // ok
import { double, square } from 'modules'; // error
var timesTwo = multiplier(2);
console.log(timesTwo(4));
错误信息:
GET http://local-host/projects/es6/src/modules 404 (Not Found)Z @ system.js:4(anonymous function) @ system.js:4(anonymous function) @ system.js:4(anonymous function) @ system.js:5(anonymous function) @ system.js:5(anonymous function) @ system.js:5(anonymous function) @ system.js:5(anonymous function) @ system.js:5(anonymous function) @ system.js:5(anonymous function) @ system.js:4 system.js:4 Uncaught (in promise) Error: Error: XHR error (404 Not Found) loading http://local-host/projects/es6/src/modules(…)
这是我的 HTML 和 system.js:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ES2015 Module Example</title>
</head>
<body>
<script src="lib/system.js"></script>
<script>
System.config({
"baseURL": "src",
// 'plugin-babel' or 'traceur' or 'typescript'
transpiler: 'plugin-babel',
// or traceurOptions or typescriptOptions
babelOptions: {
},
map: {
'traceur': './lib/traceur.min.js',
'plugin-babel': './lib/plugin-babel/plugin-babel.js',
'systemjs-babel-build': './lib/plugin-babel/systemjs-babel-browser.js'
}
}
});
System.import("app.js");
</script>
</body>
</html>
有什么想法我错过了什么吗?
因为系统js没有在模块名后面追加.js
。一些模块加载器/打包器(Node、webpack 等)正在这样做,但是没有标准规定必须 完成。
有一个 configuration option 用于此,但它将被弃用。