当前位置: 首页 > 知识库问答 >
问题:

如何在react应用程序中从公用文件夹导入文件?

浦琪
2023-03-14

我在公用文件夹中有一个javascript文件,我想将该文件导入src/components文件夹中的组件。

projectFolder
  publicFolder
    index.html
    recorder.js
  srcFolder
    componentsFolder
       Speech.js
       Speech.css

但我不能在我的组件中做这样的事情:

import Recorder from '../../public/recorder'

因为我得到了以下错误:

找不到模块:您试图导入项目src/目录之外的.../.../public/recorder。不支持src/之外的相对导入。您可以将其移动到src/中,也可以从项目的node_modules/中添加符号链接。

据我所知,它不允许在 /src目录之外导入,所以我想知道如何“添加符号链接”,或者您是否知道其他方法来修复它。

共有3个答案

百里泓
2023-03-14

如果您可以不使用public中的实际文件并在src目录中拥有重复的js文件,如果您使用vscode,则有一个简单但很酷的解决方案。此vscode扩展https://marketplace.visualstudio.com/items?itemName=emeraldwalk.RunOnSave允许您在保存时触发命令(您可以使用regex指定哪些文件保存应触发哪些命令),并且您可以指定在保存时运行的命令:

{
    "match": "public\\\\recorder.js$",
    "cmd": "copy ${file} ${workspaceFolder}\\src\\recorder.js"
}

现在,您可以从该复制文件导入。

颜举
2023-03-14

您可以使用rescripts库修改react脚本config

创建一个名为的文件。说明。js在您的根文件夹中:

module.exports = config => {
  const scopePluginIndex = config.resolve.plugins.findIndex(
    ({ constructor }) => constructor && constructor.name === "ModuleScopePlugin"
  );

  config.resolve.plugins.splice(scopePluginIndex, 1);

  return config;
};
宦文柏
2023-03-14

我相信您正在使用create-react-app...这是ModuleScopePlugin中包含的一项功能,您可以通过弹出应用程序并编辑您的webpack配置来禁用它(如本答案所述)。

但是要小心,这个功能的存在是有原因的。create-react-app-build工具只处理src/目录,因此,例如,您在此处之外的JavaScript不会被Babel传输。此外,如果你使用的是像捆绑包一样的网页包,你通常会试图避免污染全球范围。所以,除非你有一个非常具体的理由,为什么你需要这样做,我会说,试着移动它。

 类似资料:
  • 问题内容: 我的Xcode项目中有一个XML文件,我试图首先将其保存到磁盘,其次我如何知道是否已成功保存它?这是正确的方法吗?使用模拟器,我导航到iOS 11中新的“文件”文件夹,但没有看到它,但不确定是否应该存在该文件夹? 更新以包括文件是否存在我的检查: 问题答案: 您可以使用并让用户在共享URL时选择他想保存文件的位置。用户只需要选择保存到文件,然后选择要保存要导出文件的目录即可。 您可以用

  • 我只想根据请求从React组件中加载视频。用户当前会看到一个很大的列表。mp4视频。选择一个后,该视频的位置将通过道具传递给视频播放器模式。但是当按下播放按钮时,我收到一个404错误,说找不到视频。 起初,我尝试将所有视频文件放在React src文件夹中。然后,我尝试将它们移动到索引旁边的React公用文件夹。html。我还查看了import()以一次加载一个视频,但我感到非常困惑,完全卡住了。

  • 当我执行npx create-react-app myest时,在我的反应项目中不会生成公共和src文件夹。 我尝试使用npm u安装-g创建-反应-应用程序释放全局创建-反应-应用程序,并使用npm安装-g创建-反应-应用程序重新安装它。然而,当我执行npx create-react-app myest后,它卡在了下面的屏幕上

  • 我创建了ear项目,我有两个模块,命名为:mavenproject4-web mavevnproject4-ejb 我试图从web模块的ejb模块中导入一些接口和实体,但我不能。我尝试通过pom.xmm将ejb模块作为依赖项添加到web模块中,然后我的问题就解决了,这样做对吗? 添加依赖项后,我尝试运行project,并出现了以下异常:

  • 通过使用android 11(SDK API 30)设备下面的一些方法 但在Android11中运行良好。无法使用如下所示的方法使其im 函数调用 uri是我从拾取器的响应中获得的视频路径。 copyFile的函数调用 错误:new ;path:/storage/emulated/0/download/stop/mp4_20210128225711.mp4 system.err:java.io.f

  • 我正在尝试使用npx创建反应应用程序我的应用程序创建应用程序 我有npm 6.13 和节点: 12.14.1 我厌倦了遵循CreateReact应用程序中的解决方案,因为它不生成公共和src文件夹,因此无法启动 但它不起作用? 有机会吗?