Node.js 中 TypeError [ERR_IMPORT_ASSERTION_TYPE_MISSING]

龙陌發表於2024-11-23

使用匯入斷言解決錯誤“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 或類似的模組型別。

相關文章