Node执行import引起的思考

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

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.pngnode

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

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

那么我本身会问:import这个关键词,是何时引入JS语言中的?api

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

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

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

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

3.为何要引入import?spa

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

4.import适用范围在哪里?code

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

5.为何不能用别的方法解?htm

- 用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模块。

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

相关文章
相关标签/搜索