Javascript 网页2';Can';t resolve assets/img/coin.png';在';项目';
我尝试使用require语句动态导入图像,但即使在此之前,像这样的常规导入也不起作用:Javascript 网页2';Can';t resolve assets/img/coin.png';在';项目';,javascript,webpack,ecmascript-6,webpack-2,Javascript,Webpack,Ecmascript 6,Webpack 2,我尝试使用require语句动态导入图像,但即使在此之前,像这样的常规导入也不起作用: 导入“资产/img/coin.png” 实际用例是: require(assets/img/${source}.${ext}/) 导入的错误 ERROR in ./app/components/Img/index.js Module not found: Error: Can't resolve 'assets/img/coin.png' in '/Users/rublev/dev/company/suppo
导入“资产/img/coin.png”
实际用例是:
require(
assets/img/${source}.${ext}/)代码>
导入的错误
ERROR in ./app/components/Img/index.js
Module not found: Error: Can't resolve 'assets/img/coin.png' in '/Users/rublev/dev/company/support/app/components/Img'
@ ./app/components/Img/index.js 36:0-33
@ ./app/components/SectionList/index.js
@ ./app/pages/Support/index.js
@ ./app/views.js
@ ./app/app.js
@ multi (webpack)-dev-server/client?http://0.0.0.0:8080 webpack/hot/dev-server webpack-dev-server/client?http://localhost:8080 webpack/hot/only-dev-server ./app/app.js
目录结构
.
├── app
│ ├── app.js
│ ├── assets
│ │ ├── img <- where i want to import images from
│ ├── components
│ │ ├── Footer
│ │ ├── Img <- component im importing images into
│ │ ├── List
│ │ ├── Loader
│ │ ├── Nav
│ │ ├── Searchbar
│ │ ├── SectionList
│ │ └── Vote
│ ├── containers
│ │ └── App
│ ├── index.html
│ ├── pages
│ │ ├── Article
│ │ ├── Section
│ │ └── Support
│ ├── reducers.js
│ ├── router.js
│ ├── store.js
│ └── views.js
├── config
│ ├── webpack.config.base.babel.js
│ ├── webpack.config.development.babel.js
│ └── webpack.config.production.babel.js
├── package.json
└── yarn.lock
webpack.config.development.babel.js
import webpack, { IgnorePlugin } from 'webpack';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import { resolve, join } from 'path';
// dotenv
const Dotenv = require('dotenv-webpack');
const NODE_ENV = process.env.NODE_ENV;
const env = {
production: NODE_ENV === 'production',
staging: NODE_ENV === 'staging',
test: NODE_ENV === 'test',
development: NODE_ENV === 'development' || typeof NODE_ENV === 'undefined'
};
Object.assign(env, {
build: (env.production || env.staging)
});
export default {
output: {
path: join(process.cwd(), '/dist'),
publicPath: '/',
filename: 'bundle.js'
},
resolve: {
modules: [
'node_modules',
'app',
join(__dirname, '')
],
extensions: ['.html', '.json', '.scss', '.js', '.jsx'],
alias: {
normalize: join(process.cwd(), '/node_modules/normalize-css/normalize.css')
}
},
module: {
noParse: /\.min\.js/,
rules: [
{
test: /\.json($|\?)/,
use: 'json-loader',
enforce: 'pre'
},
{
test: /\.woff|\.woff2|\.svg|.eot|\.ttf/,
use: 'url-loader?prefix=font/&limit=10000'
},
{
test: /\.(jpe?g|png|gif|svg)$/i,
use: 'file-loader',
options: {
context: '/',
name: '[name].[ext]'
},
}
]
},
plugins: ([
new HtmlWebpackPlugin({
title: 'company',
template: join(process.cwd(), '/app/index.html')
}),
new Dotenv(),
new webpack.DefinePlugin({
__DEV__: env.development,
__STAGING__: env.staging,
__PRODUCTION__: env.production,
__CURRENT_ENV__: '\'' + (NODE_ENV) + '\''
})
]),
devServer: {}
};
import webpack, { IgnorePlugin } from 'webpack';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import { resolve, join } from 'path';
import config from './webpack.config.base.babel.js';
if (process.env.NODE_ENV !== 'test') {
config.entry = [
'webpack-dev-server/client?http://localhost:8080',
'webpack/hot/only-dev-server',
join(process.cwd(), '/app/') + 'app.js'
];
}
config.devtool = '#source-map';
config.module.rules = config.module.rules.concat([
{
enforce: 'pre',
test: /\.jsx?$/,
exclude: resolve(__dirname, 'app', 'node_modules'),
use: 'source-map-loader'
},
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: 'babel-loader'
},
{
test: /\.css?$/,
use: [
'style-loader',
'css-loader'
]
},
{
test: /\.(sass|scss)$/,
use: [
'style-loader',
'css-loader',
'sass-loader'
]
}
]);
config.devServer = {
contentBase: './dist',
host: '0.0.0.0',
port: 8080,
stats: {
version: false,
chunks: false,
assets: true,
colors: true,
children: true
}
};
export default config;
你需要升两级。导入,而不是assets/img/coin.png
。/../assets/img/coin.png
从错误日志中可以看出,webpack正在尝试从/img
文件夹解析您需要的图像
Module not found: Error: Can't resolve 'assets/img/coin.png' in '/Users/rublev/dev/company/support/app/components/Img'
您的webpack配置告诉webpack解析路径,需要尝试以下路径(按顺序):
node\u模块
app
- 执行所需命令的文件夹
由于路径assets/img/coin.png
既不能在node_modules
中解析,也不能在app
目录中解析,Webpack试图从上一个回退目录解析,并从那里抛出未找到
错误
coin.png
是否在app/assets/img/
中可用?结果是Sketch.app导出的文件在文件名前有一个空格。我会尝试使用前导正斜杠和/或设置resolve.modules
配置,尽管理论上不需要这样做${source}的预期值是多少运行时的
和
${ext}?是的,coin.png就在那里。我已经ls
多次查看目录,以确保我没有被绊倒。它可以在我的编辑器、预览、Photoshop等中很好地打开。我宁愿让这个应用程序只显示文本,这样就完全消除了这个问题。很好!这正是我回答的结论。您想将其标记为已接受的吗?这是S.O.,毕竟:)