私はwebpack2(正確にはv2.3.2
)を使い始めました、そして、私の設定を再作成した後、私は解決できないような問題に出かけ続けます。私は(醜いダンプのために事前にすみません)得る:
ERROR in ./src/main.js
Module not found: Error: Can't resolve 'components/DoISuportIt' in '[absolute path to my repo]/src'
resolve 'components/DoISuportIt' in '[absolute path to my repo]/src'
Parsed request is a module
using description file: [absolute path to my repo]/package.json (relative path: ./src)
Field 'browser' doesn't contain a valid alias configuration
aliased with mapping 'components': '[absolute path to my repo]/src/components' to '[absolute path to my repo]/src/components/DoISuportIt'
using description file: [absolute path to my repo]/package.json (relative path: ./src)
Field 'browser' doesn't contain a valid alias configuration
after using description file: [absolute path to my repo]/package.json (relative path: ./src)
using description file: [absolute path to my repo]/package.json (relative path: ./src/components/DoISuportIt)
as directory
[absolute path to my repo]/src/components/DoISuportIt doesn't exist
no extension
Field 'browser' doesn't contain a valid alias configuration
[absolute path to my repo]/src/components/DoISuportIt doesn't exist
.js
Field 'browser' doesn't contain a valid alias configuration
[absolute path to my repo]/src/components/DoISuportIt.js doesn't exist
.jsx
Field 'browser' doesn't contain a valid alias configuration
[absolute path to my repo]/src/components/DoISuportIt.jsx doesn't exist
[[absolute path to my repo]/src/components/DoISuportIt]
[[absolute path to my repo]/src/components/DoISuportIt]
[[absolute path to my repo]/src/components/DoISuportIt.js]
[[absolute path to my repo]/src/components/DoISuportIt.jsx]
package.json
{
"version": "1.0.0",
"main": "./src/main.js",
"scripts": {
"build": "webpack --progress --display-error-details"
},
"devDependencies": {
...
},
"dependencies": {
...
}
}
それが不満を言っているbrowser
フィールドに関して、私がこれについて見つけることができたドキュメンテーションは: package-browser-field-spec
です。 Webpackのドキュメントもありますが、デフォルトではオンになっているようです: aliasFields: ["browser"]
。私は私のpackage.json
にbrowser
フィールドを追加しようとしました、しかしそれは少しもしないようでした。
webpack.config.js
import path from 'path';
const source = path.resolve(__dirname, 'src');
export default {
context: __dirname,
entry: './src/main.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js',
},
resolve: {
alias: {
components: path.resolve(__dirname, 'src/components'),
},
extensions: ['.js', '.jsx'],
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
include: source,
use: {
loader: 'babel-loader',
query: {
cacheDirectory: true,
},
},
},
{
test: /\.css$/,
include: source,
use: [
{ loader: 'style-loader' },
{
loader: 'css-loader',
query: {
importLoader: 1,
localIdentName: '[path]___[name]__[local]___[hash:base64:5]',
modules: true,
},
},
],
},
],
},
};
src/main.js
import DoISuportIt from 'components/DoISuportIt';
src/components/DoISuportIt/index.jsx
export default function() { ... }
完全を期すために、.babelrc
{
"presets": [
"latest",
"react"
],
"plugins": [
"react-css-modules"
],
"env": {
"production": {
"compact": true,
"comments": false,
"minified": true
}
},
"sourceMaps": true
}
私は何をしているのですか?
インポートを解決していないWebpackの問題であることが判明しました - 恐ろしい恐ろしいエラーメッセージについての話:(
// Had to change
import DoISuportIt from 'components/DoISuportIt';
// To (notice the missing `./`)
import DoISuportIt from './components/DoISuportIt';
Reactサーバーサイドレンダラーを作成していますが、これは別のサーバー設定を最初から作成するときにも発生する可能性があります。このエラーが発生した場合は、以下を試してください。
例:
const serverConfig = {
name: 'server',
context: path.join(__dirname, 'src'),
entry: {serverEntry: ['./server-entry.js']},
output: {
path: path.join(__dirname, 'public'),
filename: 'server.js',
publicPath: 'public/',
libraryTarget: 'commonjs2'
},
module: {
rules: [/*...*/]
},
resolveLoader: {
modules: [
path.join(__dirname, 'node_modules')
]
},
resolve: {
modules: [
path.join(__dirname, 'node_modules')
]
}
};
私の場合、webpack.config.js
の最後まで、私は設定をexports
にする必要がありましたが、export
(exports
にする必要があります)というタイプミスがあり、webpack.config.js
のロードに失敗しました。
const path = require('path');
const config = {
mode: 'development',
entry: "./lib/components/Index.js",
output: {
path: path.resolve(__dirname, 'public'),
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
exclude: path.resolve(__dirname, "node_modules")
}
]
}
}
// pay attention to "export!s!" here
module.exports = config;
私は同じ問題を抱えていました、しかし私のものは道の間違ったケーシングのためでした:
// Wrong - uppercase C in /pathCoordinate/
./path/pathCoordinate/pathCoordinateForm.component
// Correct - lowercase c in /pathcoordinate/
./path/pathcoordinate/pathCoordinateForm.component
私のエントリをに変更しました
entry: path.resolve(__dirname, './src/js/index.js'),
そしてそれはうまくいった。
私の経験では、このエラーはWebpackのエイリアスの不適切な命名の結果でした。その中で、redux
というエイリアスがあり、webpackはエイリアスパスにreduxパッケージに付属しているredux
を探してみました。
これを修正するには、エイリアスの名前をRedux
などの別の名前に変更する必要がありました。
イオンアプリケーションを構築し、それをアップロードしようとしている人のために。アプリに少なくとも1つのプラットフォームを追加したことを確認してください。それ以外の場合は、このエラーが発生します。
私の場合、これはpackage.json
に依存パスとしてインストールされたパッケージで、次のような相対パスです。
"dependencies": {
...
"phoenix_html": "file:../deps/phoenix_html"
},
js/app.js
でimport "phoenix_html"
にインポートされました
これはうまくいきましたが、node、npmなどの更新の後...それは上記のエラーメッセージで失敗しました。
インポート行をimport "../../deps/phoenix_html"
に変更して修正しました。
私の状況では、私は私のwebpack.config.jsファイルの一番下にエクスポートを持っていませんでした。単に追加する
export default Config;
それを解決しました。
Ionicをお持ちのすべての方へ:最新の@ ion/app-scriptsバージョンに更新すると、エラーメッセージが改善されました。
npm install @ionic/app-scripts@latest --save-dev
コンポーネント内のstyleUrlsから存在しないファイルへの間違ったパスでした。不思議なことにそれは開発中にエラーを与えませんでした。