终端执行命名: node TypeScript-Http.ts

import http  from "http";
http.createServer((req,res)=> {
    res.statusCode = 200;
    res.setHeader("Content-Type","plain/html");
    res.end("Hello world!")
})

终端现象:
报错信息如下:
屏幕快照 2020-02-16 16.41.49.png

语法错误:不期望的标识符。

推论:Node执行文件里的代码时,import导入模块语句还不能识别。

那么我自己会问:import这个关键词,是什么时候引入JS语言中的?

接下来要调查的问题:
1.import出现的初衷是什么?

- 在ES6语言标准层面,实现了静态化。

2.import是要解决什么样的问题?

- 编译时就确定了依赖关系,以及输入输出变量

3.为什么要引入import?

- JS代码在历史上,从来没有模块化体系,导致无法把大项目拆分成一个个文件啊  

4.import适用范围在哪里?

- 浏览器和Node,python语言也支持

5.为什么不能用别的方法解?

- 用commonJS和AMD,一个在服务端,一个在浏览器端。

关键词JS引擎有它的解析规则。
查询import MDN JavaScript一手资料
import-JavaScript| MDN
阅读文档后,只是用法,浏览到浏览器兼容性,使用范围。

更改了js文件后缀名为.mjs执行Node的命令,结果还是不行。

就查阅阮一峰对于Module的认识,Modules,得到了答案,Node的CommonJS和ES6模块格式不兼容。

发现了node执行.mjs文件的方法,加上参数,里面的代码正确的执行了。

node --experimental-modules Typescript-http.mjs

查阅了自己电脑上的Node版本是10.x.x。选择了Node文档的版本,ECMAScript modules | Node
在第一段就写上了执行命令要加上flag才能执行ES6模块。

简单把体会写下,也算输出,考虑不足下次完善。


xiyou
44 声望0 粉丝

有始方有终,那便是那人口中所说滴,花开花落自有时。