Uncaught TypeError: Failed to resolve module specifier "fs". Relative references must start with either "/", "./", or "../"

Uncaught TypeError: Failed to resolve module specifier "fs". Relative references must start with either "/", "./", or "../"

当我尝试在我自己的模块中导入 fs 模块时 import * as fs from 'fs' 在浏览器控制台中出现以下错误:
Uncaught TypeError: Failed to resolve module specifier "fs". Relative references must start with either "/", "./", or "../".

使用require或者像./node_modules/fs这样的模块的相对路径是行不通的,有没有其他方法可以正确导入fs模块?

您有两个基本问题,这两个问题都源于您 运行 在浏览器中而不是在 Node.js 中使用此代码。


'fs' 之类的内容传递给 import 取决于 Node.js 样式模块解析。 Node.js 将在 node_modules 文件夹的内容中搜索匹配的模块。浏览器不能那样做,它们没有文件系统来搜索;他们只交易 URLs.

在浏览器中处理模块时,您必须传递:

  • 包含绝对路径的 URL(如 /fshttp://example.com/fs
  • A URL 是明确的相对路径(如 ../fs./fs)。

...就像错误信息所说的那样。

(通常您还需要在 URL 的末尾放置一个 .js,因为您的 HTTP 服务器不太可能为您这样做)。


您还需要首先在浏览器中使用 运行 的模块。

fs 是一个 Node.js built-in 模块。它可以做浏览器 不允许 允许 JavaScript 做的事情(比如访问文件系统)。

如果您想使用 fs 模块,则不能直接从浏览器使用它。相反,在 Node.js 中编写一个 Web 服务(Express.js 模块在这里很有用)并使用 Ajax 从浏览器访问它(例如 fetch API) .这将处理服务器的文件系统,而不是浏览器的。

如果要访问用户计算机上的文件,则需要使用 <input type="file">FileReader API.