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模塊。

簡單把體會寫下,也算輸出,考慮不足下次完善。

相關文章
相關標籤/搜索