我正在使用create-react-app。我试图从我的src/components内部的文件中调用我的公共文件夹中的图像。我收到这个错误信息。
./src/components/website_index.js模块未找到:你试图
import ../../public/images/logo/WC-BlackonWhite.jpg
在项目src/目录之外。国外的相对进口
Src /不支持。您可以将它移动到src/,或者添加一个
从项目的node_modules/到它的符号链接。
从“../../public/images/logo_2016.png”导入logo;
<img className="Header-logo" src={logo} alt=" logo" />
我读过很多东西,说你可以做一个导入的路径,但这仍然不是为我工作。任何帮助都将不胜感激。我知道有很多这样的问题,但他们都告诉我导入标志或形象,所以很明显,我在大局中遗漏了一些东西。
再加上Bartek Maciejiczek的回答,下面是Craco的情况:
const ModuleScopePlugin = require("react-dev-utils/ModuleScopePlugin");
const path = require("path");
module.exports = {
webpack: {
configure: webpackConfig => {
webpackConfig.resolve.plugins.forEach(plugin => {
if (plugin instanceof ModuleScopePlugin) {
plugin.allowedFiles.add(path.resolve("./config.json"));
}
});
return webpackConfig;
}
}
};
我之前的解决方案适用于Webpack 4,但不适用于Webpack 5。在浏览了从那时起积累的解决方法之后,我发现下面的方法非常简单(而且似乎是可扩展的)。
import { CracoAliasPlugin } from 'react-app-alias';
const cracoConfig = {
plugins: [
{
plugin: CracoAliasPlugin,
options: {
alias: { '~': './' },
},
},
],
}
然后像这样导入:
import whatever from '~/<path-to-file>';
此限制确保所有文件或模块(导出)都在src/目录中,实现在./node_modules/react-dev-utils/ModuleScopePlugin.js中,在以下代码行中。
// Resolve the issuer from our appSrc and make sure it's one of our files
// Maybe an indexOf === 0 would be better?
const relative = path.relative(appSrc, request.context.issuer);
// If it's not in src/ or a subdirectory, not our request!
if (relative.startsWith('../') || relative.startsWith('..\\')) {
return callback();
}
您可以通过
修改这段代码(不推荐)
或者执行eject,然后从目录中删除ModuleScopePlugin.js。
const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin');从。/ node_modules / react-scripts / config / webpack.config.dev.js
PS:注意弹出的后果。