使用匯入斷言解決錯誤“TypeError [ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module needs an import assertion of type json”,例如 import myJson from './example.json' assert {type: 'json'}。 此語法指示模組是 JSON 並且不被執行。
這是發生該錯誤的示例
// ⛔️ TypeError [ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module
// "init/example.json" needs an
// import assertion of type "json"
import myJson from './example.json';
上面這行丟擲了一個錯誤,因為我們需要明確指出我們正在匯入一個 JSON 模組,所以它不能被執行。
import myJson from './example.json' assert {type: 'json'};
// 👇️ {
// name: 'Alice',
// country: 'Austria',
// tasks: [ 'develop', 'design', 'test' ],
// age: 30
// }
console.log(myJson.person);
console.log(myJson.person.name); // 👉️ "Alice"
console.log(myJson.person.country); // 👉️ "Austria"
注意,我們的 package.json 中的 type 屬性必須設定為 module,因為我們使用的是 ES6 Modules 語法。
{
"type": "module",
// ... rest
}
匯入斷言提議為模組匯入語句新增了內聯語法。
在匯入無法執行程式碼的 JSON 模組和類似模組型別時,引入了該語法以提高安全性。
這可以防止伺服器以不同的 MIME 型別響應,從而導致程式碼意外執行的情況。
assert {type: 'json'} 語法使我們能夠指定我們正在匯入一個不會被執行的 JSON 或類似的模組型別。