当我尝试在我自己的模块中导入 fs 模块时,如 import * as fs from 'fs'
浏览器控制台出现以下错误:
未捕获的类型错误:无法解析模块说明符“fs”。相对引用必须以“/”、“./”或“../”开头
。
使用 require
或使用模块的相对路径如 ./node_modules/fs
将不起作用,是否有任何其他方法可以正确导入 fs 模块?
最佳答案
您有两个基本问题,这两个问题都源于您是在浏览器中而不是在 Node.js 中运行此代码。
传递类似于 'fs'
的内容至 import
取决于 Node.js 样式模块解析。 Node.js 将搜索 node_modules
的内容匹配模块的文件夹。浏览器不能那样做,它们没有文件系统来搜索;他们只处理 URL。
在浏览器中处理模块时,您必须传递:
/fs
或 http://example.com/fs
)../fs
或 ./fs
)。...就像错误信息所说的那样。
(通常您还需要在 URL 的末尾放置一个 .js
,因为您的 HTTP 服务器不太可能为您这样做)。
您还需要首先使用一个将在浏览器中运行的模块。
fs
是一个 Node.js 内置模块。它执行浏览器不允许允许 JavaScript 执行的操作(例如访问文件系统)。
如果你想使用 fs
模块,那么您不能直接从浏览器使用它。相反,在 Node.js 中编写 Web 服务(Express.js 模块在这里很有用)并使用 Ajax(例如 fetch
API)从浏览器访问它。这将处理服务器的文件系统,而不是浏览器的。
如果您想访问用户计算机上的文件,则需要使用 <input type="file">
和 FileReader
API。
关于javascript - 未捕获的类型错误 : Failed to resolve module specifier "fs". 相对引用必须以 "/"、 "./"或 "../"开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72458428/
相关文章:
python - 如何授予应用程序(而非用户本身)对文件夹和文件的权限
sql - 从现有表创建 BigQuery 表,包括 _PARTITIONTIME
flutter - 如何更新 flutterfire_web_sdk_version 以及如何启用
api - 为什么 Instagram 公共(public) API 未使用身份验证
wordpress - 如何使用 WordPress Multisite 重定向特定站点的主页
unity3d - Unity Microgame WebGL 上传不工作(500 内部服务器)
python - pydantic.error_wrappers.ValidationError :