webpack:未捕获的 ReferenceError:未定义要求
Posted
技术标签:
【中文标题】webpack:未捕获的 ReferenceError:未定义要求【英文标题】:webpack : Uncaught ReferenceError: require is not defined 【发布时间】:2018-01-30 19:36:27 【问题描述】:这个错误出现在 webpack target = node
但我已经完成了target=web
(默认)
我也没有从外部加载 reactjs
在浏览器中加载应用时出现此错误
我做错了什么?
在控制台中
文件
webpack.config.js
const htmlWebpackPlugin = require('html-webpack-plugin');
const nodeExternals = require('webpack-node-externals');
const config =
target: 'web',
externals: [nodeExternals()],
entry: './src/index.js',
output:
filename: '[name].bundle.js',
path: __dirname + '/build'
,
module:
rules: [
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
,
test: /\.css$/,
use: ExtractTextPlugin.extract(
fallback: "style-loader",
use: "css-loader"
)
,
test: /\.(png|svg|jpe?g|gif)$/,
use: [
loader: 'file-loader',
options:
name: '[path][name].[ext]'
]
,
test: /\.(woff|woff2|eot|ttf|otf)$/,
use: ['file-loader']
]
,
devtool: 'inline-source-map',
plugins: [
new HtmlWebpackPlugin(
title: 'Instarem.com'
)
]
;
module.exports = config;
.babelrc 使用
babel-preset-env
"presets": [
"react",
[
"env",
"targets":
"browsers": ["last 2 versions"]
,
"debug": true,
"modules": "commonjs"
]
],
"plugins": [
"transform-object-rest-spread",
"transform-class-properties"
]
谢谢:)
我找到了线索
在 facebook 的 create react app generator 捆绑包中显示
module.exports = __webpack_require__(/*! ./lib/React */ "./node_modules/react/lib/React.js");
但在我的情况下它只显示
module.exports = require("react");
【问题讨论】:
【参考方案1】:我的问题出在我的 package.json 中,我必须删除
"type":"module"
它试图将文件加载为 es6 模块
https://nodejs.org/api/packages.html#packages_type
【讨论】:
非常好,呵呵【参考方案2】:如果您使用的是webpack
和HtmlWebpackPlugin
,请尝试从index.html
删除 <script src="./src/app.js"></script>
【讨论】:
【参考方案3】:也许它会对某人有所帮助。添加到调用 nodeExternals 选项 importType 与值 'umd'。
nodeExternals(
importType: 'umd'
)
【讨论】:
这对我帮助很大。谢谢先生。【参考方案4】:我在本地设置了这个配置(减去似乎特定于您的环境的无关内容)并且它有效。
package.json
"name": "test-webpack",
"version": "1.0.0",
"description": "",
"main": "webpack.config.js",
"scripts":
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack"
,
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies":
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.0",
"babel-preset-react": "^6.24.1",
"webpack": "^3.5.5"
,
"dependencies":
"react": "^15.6.1",
"react-dom": "^15.6.1"
.babelrc
"presets": [
"react",
[
"env",
"targets":
"browsers": ["last 2 versions"]
,
"debug": true,
"modules": "commonjs"
]
]
webpack.config.js
const config =
target: 'web',
entry: './index.js',
output:
filename: '[name].bundle.js',
path: __dirname + '/build',
,
module:
rules: [
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
,
],
,
;
module.exports = config;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(<div>Hello</div>, document.getElementById('root'));
index.html
<body>
<div id="root" />
<script src=" ./build/main.bundle.js "></script>
</body>
运行 npm start 构建包并运行 index.html 运行 react 应用程序。
【讨论】:
我已经在使用babel-preset-env
。你可以在.babelrc中看到【参考方案5】:
你不应该使用
externals: [nodeExternals()],
在网络应用程序中。根据https://github.com/liady/webpack-node-externals,它仅用于后端。由于您在 Web 应用程序中使用 nodeExternals
,因此您将获得 CommonJS 模块,该模块需要内置节点 require
函数。因此,只需将其删除即可修复错误。
【讨论】:
我使用babel-preset-env
而不是babel-preset-es2015
几乎做同样的事情。只是babel-preset-env
做的更多一点。所以一次只应该使用一个
@vijay 看到我更新的答案。我复制了 ypur 配置,它在没有 nodeExternals
的情况下按预期工作。
我刚刚遇到了完全相同的问题,并且确实将 nodeExternals() 放在了针对 web 的配置中。以上是关于webpack:未捕获的 ReferenceError:未定义要求的主要内容,如果未能解决你的问题,请参考以下文章
Webpack - 未捕获的 ReferenceError:未定义 webpackJsonp
Webpack:Bundle.js - 未捕获的 ReferenceError:未定义进程
Angular 2/webpack 中的“未捕获的 ReferenceError:未定义要求”
未捕获的类型错误:在 webpack 重建 CommonsChunkPlugin 后无法读取未定义的属性“调用”