簡體   English   中英

在 ES6 Node.js 中導入“.json”擴展會引發錯誤

[英]Import '.json' extension in ES6 Node.js throws an error

我們正在嘗試使用 Node.js 為 ES6 導出和導入模塊的新方法。 package.json文件中獲取版本號對我們來說很重要。 下面的代碼應該做到這一點:

import {name, version} from '../../package.json'

但是,在執行時會引發以下錯誤:

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".json" for T:\ICP\package.json imported from T:\ICP\src\controllers\about.js

我們缺少什么嗎?
不支持擴展名.json嗎?
是否有另一種方法可以使用 Node.js 13+ 檢索此信息?

根據Node.js ES 模塊文檔--experimental-json-modules 是導入 JSON 文件所必需的。

包括--experimental-json-modules標志以使模塊工作。

node --experimental-json-modules about.js

您可以在 Node.js 的 ES6 模塊中導入require

import { createRequire } from "module"; // Bring in the ability to create the 'require' method
const require = createRequire(import.meta.url); // construct the require method
const my_json_file = require("path/to/json/your-json-file.json") // use the require method

您可以在 docs node-js中使用它,如下所示:

import { readFile } from 'fs/promises';

const json = JSON.parse(await readFile(new URL('../../package.json', import.meta.url)));

來自 Node.js v16 & v18官方文檔:

import SomeJson from './some.json' assert { type: 'json' }

並使用匹配的實驗標志運行它:

node --experimental-json-modules ./your-file.js

是的,還有另一種獲取版本的方法,但它沒有ES6模塊系統。 這是一個工作示例: https : //codesandbox.io/s/funny-banzai-2xgvf

嘗試使用

process.env.npm_package_version

這可能會幫助你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM