Javascript 网页包路径参数不是字符串
我一直绞尽脑汁想弄明白为什么Webpack会说输入模块“app”的路径不是字符串。这与我在stackoverflow上读到的另一个错误并不完全相同,这就是为什么我自己会问这个问题 我正在使用最新的Webpack(5.16)和Webpack cli(4.4),并尝试将其构建为在节点上运行 我有以下webpack.config.js,其中我只添加了stats部分来尝试调试该问题:Javascript 网页包路径参数不是字符串,javascript,node.js,webpack,Javascript,Node.js,Webpack,我一直绞尽脑汁想弄明白为什么Webpack会说输入模块“app”的路径不是字符串。这与我在stackoverflow上读到的另一个错误并不完全相同,这就是为什么我自己会问这个问题 我正在使用最新的Webpack(5.16)和Webpack cli(4.4),并尝试将其构建为在节点上运行 我有以下webpack.config.js,其中我只添加了stats部分来尝试调试该问题: 'use strict' const webpack = require('webpack'); const Mi
'use strict'
const webpack = require('webpack');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
context: __dirname,
stats: {
logging: true,
loggingDebug: [/webpack/],
loggingTrace: true,
errors: true,
errorStack: true,
errorDetails: true,
},
entry: {
app: './js/app.js'
},
optimization: {
minimize: true
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
Popper: ['popper.js', 'default'],
}),
new MiniCssExtractPlugin(),
],
output: {
publicPath: '/',
path: __dirname + '/dist',
filename: '[name].bundle.js',
},
module: {
rules: [
{
test: /\.m?js$/, exclude: /(node_modules)/,
use: ['babel-loader', { options: { presets: ['@babel/preset-env'] } }]
},
{
test: /\.(scss)$/,
use: [{
loader: 'style-loader',
}, {
loader: 'css-loader',
}, {
loader: 'postcss-loader',
options: {
plugins: function () {
return [
require('precss'),
require('autoprefixer')
]
}
}
}, {
loader: 'sass-loader'
}]
},
{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, 'css-loader']
},
{
test: /\.(woff|woff2)$/,
use: ['url-loader', { options: { limit: 5000 } } ]
},
{
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
use: ['url-loader', { options: { limit: 10000, mimetype: 'application/octet-stream' } } ]
},
{
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
use: ['url-loader', { options: { limit: 10000, mimetype: 'image/svg+xml' } } ]
},
{
test: require.resolve('jquery'),
use: [{
loader: 'expose-loader',
options: {
exposes: ['$','jQuery']
}
}]
}
],
},
}
myapp.js文件中的以下代码:
import 'bootstrap'
import 'bootstrap/dist/css/bootstrap.min.css'
import 'counterup/jquery.counterup.js'
import '../template/js/custom.js'
import '../template/css/style.css'
每当我在这段代码上运行webpack时,总是会出现以下错误:
ERROR in app
Module not found: Error: path argument is not a string
ModuleNotFoundError: Module not found: Error: path argument is not a string
at factory.create (/app/node_modules/webpack/lib/Compilation.js:1656:28)
at hooks.factorize.callAsync (/app/node_modules/webpack/lib/NormalModuleFactory.js:708:13)
at eval (eval at create (/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:10:1)
at hooks.resolve.callAsync (/app/node_modules/webpack/lib/NormalModuleFactory.js:272:22)
at eval (eval at create (/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:9:1)
at err (/app/node_modules/webpack/lib/NormalModuleFactory.js:494:15)
at err (/app/node_modules/webpack/lib/NormalModuleFactory.js:118:11)
at resolveRequestArray (/app/node_modules/webpack/lib/NormalModuleFactory.js:557:8)
at /app/node_modules/neo-async/async.js:2830:7
at done (/app/node_modules/neo-async/async.js:2925:13)
应用程序中的错误
找不到模块:错误:路径参数不是字符串
ModuleNotFoundError:未找到模块:错误:路径参数不是字符串
在factory.create(/app/node_modules/webpack/lib/Compilation.js:1656:28)
在hooks.factorize.callAsync(/app/node_modules/webpack/lib/NormalModuleFactory.js:708:13)
评估时(创建时评估(/app/node_modules/tapable/lib/HookCodeFactory.js:33:10),:10:1)
在hooks.resolve.callAsync(/app/node_modules/webpack/lib/NormalModuleFactory.js:272:22)
评估时(创建时评估(/app/node_modules/tapable/lib/HookCodeFactory.js:33:10),:9:1)
错误(/app/node_modules/webpack/lib/NormalModuleFactory.js:494:15)
错误(/app/node_modules/webpack/lib/NormalModuleFactory.js:118:11)
在resolveRequestArray(/app/node_modules/webpack/lib/NormalModuleFactory.js:557:8)
at/app/node_modules/neo-async/async.js:2830:7
完成时(/app/node_modules/neo async/async.js:2925:13)
它在这里指的是什么“路径”?从添加上下文到更改条目,到移动app.js文件,以及从app.js中删除除bootstrap之外的所有内容,我都尝试过。似乎无论我做什么,我都无法让它真正编译。我查看了网页包代码,但是堆栈跟踪并没有提供任何有用的提示
如果您有任何帮助,我们将不胜感激。为了简化代码,我们删除了一些属性,您是对的,不需要导入
path
节点:14.15.1
网页包:5.16
webpackCLI:4.4
module.exports = {
entry: {
app: './js/app.js',
},
output: {
path: __dirname + '/dist',
},
module: {
rules: [
{
test: /\.m?js$/,
exclude: /(node_modules)/,
use: {
// you forgot to set the `loader` property
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
},
],
},
};
为了简化代码,我们删除了一些属性,您是对的,不需要导入
path
节点:14.15.1
网页包:5.16
webpackCLI:4.4
module.exports = {
entry: {
app: './js/app.js',
},
output: {
path: __dirname + '/dist',
},
module: {
rules: [
{
test: /\.m?js$/,
exclude: /(node_modules)/,
use: {
// you forgot to set the `loader` property
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
},
],
},
};
添加以下内容:
constpath=require('path')代码>我最初有这个功能,并使用“path.join(uu dirname,'dist')”作为路径输出,但这也不起作用。我还尝试使用它来指定app.js文件的路径。您尚未导入路径
模块,如图所示,导入路径不是必需的,我已经尝试了在您指定的链接中使用该路径的确切方式,但仍然会出现相同的错误。添加此项:const path=require('path')代码>我最初有这个功能,并使用“path.join(uu dirname,'dist')”作为路径输出,但这也不起作用。我还尝试使用它来指定app.js文件的路径。您尚未导入路径
模块,如图所示,导入路径不是必需的,我已经尝试了在您指定的链接中使用它的确切方式,但仍然会出现相同的错误。谢谢,这实际上一直是我的问题。我想我可以在使用中速记加载程序,但是你需要显式地设置它。我猜它指的是解决装载机的路径。谢谢,这实际上一直是我的问题。我想我可以在使用中速记加载程序,但是你需要显式地设置它。我猜它所指的路径是用于解析加载程序的。