设置 firebase 时反应 js 无法解析 worker_threads
react js can't resolve worker_threads while setting up firebase
我在基于 reacjs 的应用程序中工作,我想添加 firebase 来存储简单数据,所以我遵循了一些 firebase 教程,因为我不熟悉它。但是,当我在设置 firebase 后尝试我的代码时,我的控制台中出现了 43 个不同的错误。现在我设法摆脱了其中的大部分(polyfill 的问题),但我无法绕过最后一个。
我收到这个错误,似乎问题与 worker_threads 有关,但我不知道它们来自哪里以及如何解决它,我看到了一些关于节点工作者的教程,但我仍然不明白我必须传递什么样的数据或如何设置它。
Compiled with problems:
WARNING in ./node_modules/jest-worker/build/WorkerPool.js 22:4-29
Module not found: Error: Can't resolve 'worker_threads' in 'C:\Users\{my_path}\node_modules\jest-worker\build'
WARNING in ./node_modules/jest-worker/build/base/BaseWorkerPool.js 111:19-46
Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/jest-worker/build/index.js 68:19-38
Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/jest-worker/build/workers/processChild.js 89:15-28
Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/jest-worker/build/workers/processChild.js 105:15-28
Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/loader-runner/lib/loadLoader.js 19:16-36
Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/terser-webpack-plugin/dist/minify.js 43:118-125
Critical dependency: require function is used in a way in which dependencies cannot be statically extracted
WARNING in ./node_modules/terser-webpack-plugin/dist/utils.js 528:18-51
Module not found: Error: Can't resolve 'uglify-js/package.json' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\terser-webpack-plugin\dist'
WARNING in ./node_modules/terser-webpack-plugin/dist/utils.js 604:18-51
Module not found: Error: Can't resolve '@swc/core/package.json' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\terser-webpack-plugin\dist'
WARNING in ./node_modules/terser-webpack-plugin/dist/utils.js 685:18-49
Module not found: Error: Can't resolve 'esbuild/package.json' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\terser-webpack-plugin\dist'
WARNING in ./node_modules/webpack/lib/debug/ProfilingPlugin.js 26:13-33
Module not found: Error: Can't resolve 'inspector' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\webpack\lib\debug'
WARNING in ./node_modules/webpack/lib/serialization/ObjectMiddleware.js 647:9-25
Critical dependency: the request of a dependency is an expression
ERROR in ./src/pages/seeker.js 24:0-25
Module not found: Error: Can't resolve 'babel-polyfill' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\src\pages'
ERROR in ./node_modules/jest-worker/build/workers/ChildProcessWorker.js 9:15-39
Module not found: Error: Can't resolve 'child_process' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\jest-worker\build\workers'
ERROR in ./node_modules/jest-worker/build/workers/NodeThreadsWorker.js 29:15-40
Module not found: Error: Can't resolve 'worker_threads' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\jest-worker\build\workers'
ERROR in ./node_modules/jest-worker/build/workers/messageParent.js 19:39-64
Module not found: Error: Can't resolve 'worker_threads' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\jest-worker\build\workers'
ERROR in ./node_modules/terser-webpack-plugin/dist/utils.js 490:6-26
Module not found: Error: Can't resolve 'uglify-js' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\terser-webpack-plugin\dist'
ERROR in ./node_modules/terser-webpack-plugin/dist/utils.js 568:14-34
Module not found: Error: Can't resolve '@swc/core' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\terser-webpack-plugin\dist'
ERROR in ./node_modules/terser-webpack-plugin/dist/utils.js 646:18-36
Module not found: Error: Can't resolve 'esbuild' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\terser-webpack-plugin\dist'
这是我正在使用的 React 组件,我认为问题不在于此,但无论如何我会尽我所能分享,以便您能帮助我。该组件从表单中获取一些数据并将其推送到 firebase 实时数据库。
我没有使用 create-react-app,所以它与该模块的错误无关。
import React, {useState, useEffect} from "react";
import { Navigate } from 'react-router-dom';
import {firebase} from "../../firebase-config";
const db = firebase.database()
const addToTeam = (hero) => {
const [goHome, setGoHome] = useState(false)
const prevTeam = db.ref("team") ? db.ref("team") : [];
const onClick = (e) => {
const newTeam = prevTeam.push();
newTeam.set({
id : hero.id,
name : hero.name,
intelligence : hero.intelligence,
strenght : hero.strenght,
speed : hero.speed,
durability : hero.durability,
power : hero.power,
combat : hero.combat
})
localStorage.setItem("addHeroAction", false);
//setGoHome({ goHome : true})
}
return(
<div>
<button onClick={onClick}>Add to my team</button>
{goHome && <Navigate to="/home"/> }
</div>
)
};
const deleteFromTeam = (hero) => {
const onClick = (e) =>{
e.preventDefault();
}
return(
<div>
<button onClick={onClick}>Delete hero from team</button>
</div>
)
}
export {addToTeam, deleteFromTeam};
这是我的 webpack-config 文件
const HtmlWebPackPlugin = require("html-webpack-plugin");
const NodePolyfillPlugin = require("node-polyfill-webpack-plugin")
const path = require("path");
const appPath = path.resolve(__dirname, "src/App");
const htmlPlugin = new HtmlWebPackPlugin({
template: "src/index.html",
filename: "./index.html"
});
module.exports = {
mode: 'development',
entry : ['core-js/stable/promise', appPath],
module:{
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.s[ac]ss$/i,
use: [
"style-loader",
"css-loader",
"sass-loader",
],
}
]
},
resolve: {
alias: {
react: path.resolve('./node_modules/react'),
},
fallback: {
"path": require.resolve("path-browserify"),
"fs": false,
"tls": false,
"net": false,
"path": false,
"zlib": false,
"http": false,
"https": false,
"stream": false,
"crypto": false,
}
},
output: {
filename: 'transformed.js',
path: path.resolve(__dirname,'/build.js')
},
plugins:[
htmlPlugin,
new NodePolyfillPlugin()
],
devServer:{
historyApiFallback: true
}
}
我的 firebase-config 文件
import firebase from "firebase/compat/app";
import webpack from "webpack";
import { initializeApp } from "firebase/app"
new webpack.EnvironmentPlugin(['FIREBASE_API_KEY', 'FIREBASE_DATABASEURL', 'FIREBASE_PROJECT_ID', 'FIREBASE_SENDER_ID'])
const firebaseConfig = {
apiKey: FIREBASE_API_KEY,
authDomain: "superteam-maker.firebaseapp.com",
databaseURL: FIREBASE_DATABASEURL,
projectId: "superteam-maker",
storageBucket: "superteam-maker.appspot.com",
messagingSenderId: FIREBASE_SENDER_ID,
appId: FIREBASE_PROJECT_ID
};
const initFirebase = () => {
if(!firebase.apps.length){
initializeApp(firebaseConfig);
}
}
initFirebase()
export {firebase};
还有我的 package.json 文件以防它很重要
{
"name": "challenge-react",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "webpack-dev-server"
},
"author": "Alexander García",
"license": "ISC",
"dependencies": {
"@babel/polyfill": "^7.12.1",
"axios": "^0.24.0",
"babel-loader": "^8.2.3",
"core-js": "^3.20.1",
"css-loader": "^6.5.1",
"express": "^4.17.2",
"firebase": "^9.6.1",
"formik": "^2.2.9",
"history": "^5.1.0",
"html-webpack-plugin": "^5.5.0",
"node-polyfill-webpack-plugin": "^1.1.4",
"path": "^0.12.7",
"path-browserify": "^1.0.1",
"react": "^17.0.2",
"react-app-polyfill": "^3.0.0",
"react-dom": "^17.0.2",
"react-router-dom": "^6.0.2",
"reactfire": "^4.2.1",
"sass": "^1.44.0",
"sass-loader": "^12.4.0",
"style-loader": "^3.3.1",
"webpack": "^5.64.4",
"webpack-dev-server": "^4.6.0"
},
"devDependencies": {
"@babel/cli": "^7.16.0",
"@babel/core": "^7.16.0",
"@babel/preset-env": "^7.16.4",
"@babel/preset-react": "^7.16.0",
"babel-core": "^6.26.3",
"webpack-cli": "^4.9.1"
}
}
你们能告诉我我做错了什么吗?或者至少解释一下 worker_threads 做什么?
我找不到那个特定错误的解决方案,但是,我意识到 Firebase 几个月前更新到版本 9,与上一个版本相比,使用情况发生了很大变化。因此,如果其他人正在为此类错误而苦苦挣扎,请在 firebase 9 上找到最新的教程。
我在基于 reacjs 的应用程序中工作,我想添加 firebase 来存储简单数据,所以我遵循了一些 firebase 教程,因为我不熟悉它。但是,当我在设置 firebase 后尝试我的代码时,我的控制台中出现了 43 个不同的错误。现在我设法摆脱了其中的大部分(polyfill 的问题),但我无法绕过最后一个。
我收到这个错误,似乎问题与 worker_threads 有关,但我不知道它们来自哪里以及如何解决它,我看到了一些关于节点工作者的教程,但我仍然不明白我必须传递什么样的数据或如何设置它。
Compiled with problems:
WARNING in ./node_modules/jest-worker/build/WorkerPool.js 22:4-29
Module not found: Error: Can't resolve 'worker_threads' in 'C:\Users\{my_path}\node_modules\jest-worker\build'
WARNING in ./node_modules/jest-worker/build/base/BaseWorkerPool.js 111:19-46
Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/jest-worker/build/index.js 68:19-38
Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/jest-worker/build/workers/processChild.js 89:15-28
Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/jest-worker/build/workers/processChild.js 105:15-28
Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/loader-runner/lib/loadLoader.js 19:16-36
Critical dependency: the request of a dependency is an expression
WARNING in ./node_modules/terser-webpack-plugin/dist/minify.js 43:118-125
Critical dependency: require function is used in a way in which dependencies cannot be statically extracted
WARNING in ./node_modules/terser-webpack-plugin/dist/utils.js 528:18-51
Module not found: Error: Can't resolve 'uglify-js/package.json' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\terser-webpack-plugin\dist'
WARNING in ./node_modules/terser-webpack-plugin/dist/utils.js 604:18-51
Module not found: Error: Can't resolve '@swc/core/package.json' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\terser-webpack-plugin\dist'
WARNING in ./node_modules/terser-webpack-plugin/dist/utils.js 685:18-49
Module not found: Error: Can't resolve 'esbuild/package.json' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\terser-webpack-plugin\dist'
WARNING in ./node_modules/webpack/lib/debug/ProfilingPlugin.js 26:13-33
Module not found: Error: Can't resolve 'inspector' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\webpack\lib\debug'
WARNING in ./node_modules/webpack/lib/serialization/ObjectMiddleware.js 647:9-25
Critical dependency: the request of a dependency is an expression
ERROR in ./src/pages/seeker.js 24:0-25
Module not found: Error: Can't resolve 'babel-polyfill' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\src\pages'
ERROR in ./node_modules/jest-worker/build/workers/ChildProcessWorker.js 9:15-39
Module not found: Error: Can't resolve 'child_process' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\jest-worker\build\workers'
ERROR in ./node_modules/jest-worker/build/workers/NodeThreadsWorker.js 29:15-40
Module not found: Error: Can't resolve 'worker_threads' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\jest-worker\build\workers'
ERROR in ./node_modules/jest-worker/build/workers/messageParent.js 19:39-64
Module not found: Error: Can't resolve 'worker_threads' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\jest-worker\build\workers'
ERROR in ./node_modules/terser-webpack-plugin/dist/utils.js 490:6-26
Module not found: Error: Can't resolve 'uglify-js' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\terser-webpack-plugin\dist'
ERROR in ./node_modules/terser-webpack-plugin/dist/utils.js 568:14-34
Module not found: Error: Can't resolve '@swc/core' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\terser-webpack-plugin\dist'
ERROR in ./node_modules/terser-webpack-plugin/dist/utils.js 646:18-36
Module not found: Error: Can't resolve 'esbuild' in 'C:\Users\alexg\Desktop\Apuntes\Programación\Challenge-React\node_modules\terser-webpack-plugin\dist'
这是我正在使用的 React 组件,我认为问题不在于此,但无论如何我会尽我所能分享,以便您能帮助我。该组件从表单中获取一些数据并将其推送到 firebase 实时数据库。
我没有使用 create-react-app,所以它与该模块的错误无关。
import React, {useState, useEffect} from "react";
import { Navigate } from 'react-router-dom';
import {firebase} from "../../firebase-config";
const db = firebase.database()
const addToTeam = (hero) => {
const [goHome, setGoHome] = useState(false)
const prevTeam = db.ref("team") ? db.ref("team") : [];
const onClick = (e) => {
const newTeam = prevTeam.push();
newTeam.set({
id : hero.id,
name : hero.name,
intelligence : hero.intelligence,
strenght : hero.strenght,
speed : hero.speed,
durability : hero.durability,
power : hero.power,
combat : hero.combat
})
localStorage.setItem("addHeroAction", false);
//setGoHome({ goHome : true})
}
return(
<div>
<button onClick={onClick}>Add to my team</button>
{goHome && <Navigate to="/home"/> }
</div>
)
};
const deleteFromTeam = (hero) => {
const onClick = (e) =>{
e.preventDefault();
}
return(
<div>
<button onClick={onClick}>Delete hero from team</button>
</div>
)
}
export {addToTeam, deleteFromTeam};
这是我的 webpack-config 文件
const HtmlWebPackPlugin = require("html-webpack-plugin");
const NodePolyfillPlugin = require("node-polyfill-webpack-plugin")
const path = require("path");
const appPath = path.resolve(__dirname, "src/App");
const htmlPlugin = new HtmlWebPackPlugin({
template: "src/index.html",
filename: "./index.html"
});
module.exports = {
mode: 'development',
entry : ['core-js/stable/promise', appPath],
module:{
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.s[ac]ss$/i,
use: [
"style-loader",
"css-loader",
"sass-loader",
],
}
]
},
resolve: {
alias: {
react: path.resolve('./node_modules/react'),
},
fallback: {
"path": require.resolve("path-browserify"),
"fs": false,
"tls": false,
"net": false,
"path": false,
"zlib": false,
"http": false,
"https": false,
"stream": false,
"crypto": false,
}
},
output: {
filename: 'transformed.js',
path: path.resolve(__dirname,'/build.js')
},
plugins:[
htmlPlugin,
new NodePolyfillPlugin()
],
devServer:{
historyApiFallback: true
}
}
我的 firebase-config 文件
import firebase from "firebase/compat/app";
import webpack from "webpack";
import { initializeApp } from "firebase/app"
new webpack.EnvironmentPlugin(['FIREBASE_API_KEY', 'FIREBASE_DATABASEURL', 'FIREBASE_PROJECT_ID', 'FIREBASE_SENDER_ID'])
const firebaseConfig = {
apiKey: FIREBASE_API_KEY,
authDomain: "superteam-maker.firebaseapp.com",
databaseURL: FIREBASE_DATABASEURL,
projectId: "superteam-maker",
storageBucket: "superteam-maker.appspot.com",
messagingSenderId: FIREBASE_SENDER_ID,
appId: FIREBASE_PROJECT_ID
};
const initFirebase = () => {
if(!firebase.apps.length){
initializeApp(firebaseConfig);
}
}
initFirebase()
export {firebase};
还有我的 package.json 文件以防它很重要
{
"name": "challenge-react",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "webpack-dev-server"
},
"author": "Alexander García",
"license": "ISC",
"dependencies": {
"@babel/polyfill": "^7.12.1",
"axios": "^0.24.0",
"babel-loader": "^8.2.3",
"core-js": "^3.20.1",
"css-loader": "^6.5.1",
"express": "^4.17.2",
"firebase": "^9.6.1",
"formik": "^2.2.9",
"history": "^5.1.0",
"html-webpack-plugin": "^5.5.0",
"node-polyfill-webpack-plugin": "^1.1.4",
"path": "^0.12.7",
"path-browserify": "^1.0.1",
"react": "^17.0.2",
"react-app-polyfill": "^3.0.0",
"react-dom": "^17.0.2",
"react-router-dom": "^6.0.2",
"reactfire": "^4.2.1",
"sass": "^1.44.0",
"sass-loader": "^12.4.0",
"style-loader": "^3.3.1",
"webpack": "^5.64.4",
"webpack-dev-server": "^4.6.0"
},
"devDependencies": {
"@babel/cli": "^7.16.0",
"@babel/core": "^7.16.0",
"@babel/preset-env": "^7.16.4",
"@babel/preset-react": "^7.16.0",
"babel-core": "^6.26.3",
"webpack-cli": "^4.9.1"
}
}
你们能告诉我我做错了什么吗?或者至少解释一下 worker_threads 做什么?
我找不到那个特定错误的解决方案,但是,我意识到 Firebase 几个月前更新到版本 9,与上一个版本相比,使用情况发生了很大变化。因此,如果其他人正在为此类错误而苦苦挣扎,请在 firebase 9 上找到最新的教程。