【问题标题】:ReferenceError: window is not defined in react laravel projectReferenceError:反应 laravel 项目中未定义窗口
【发布时间】:2022-01-02 00:26:09
【问题描述】:

我已经在 laravel 项目中安装了 react 使用

composer require laravel/ui 
php artisan ui react

我可以用php artisan serve 很好地运行 laravel 服务器。现在我也想运行npm start。这是我的package.json 文件。

{
    "private": true,
    "scripts": {
        "start": "node resources/js/app.js", 
        "dev": "npm run development",
        "development": "mix",
        "watch": "mix watch",
        "watch-poll": "mix watch -- --watch-options-poll=1000",
        "hot": "mix watch --hot",
        "prod": "npm run production",
        "production": "mix --production"
    },
    "devDependencies": {
        "@babel/preset-react": "^7.13.13",
        "axios": "^0.21",
        "bootstrap": "^4.6.0",
        "jquery": "^3.6",
        "laravel-mix": "^6.0.6",
        "": "^4.17.19",
        "popper.js": "^1.16.1",
        "postcss": "^8.1.14",
        "react": "^17.0.2",
        "react-dom": "^17.0.2",
        "resolve-url-loader": "^4.0.0",
        "sass": "^1.32.11",
        "sass-loader": "^11.0.1"
    },
    "dependencies": {
        "react-router-dom": "^6.0.2"
    }
}

当我运行npm start 时,我发现此错误消息:

window._ = require('lodash');
^

ReferenceError: window is not defined

如何解决这个问题?谢谢。

编辑: 通常我习惯于使用npx create-react-app my-app 命令创建反应项目。然后我运行npm startlocalhost:3000 运行服务器。但是这次我在 laravel/ui 的帮助下在 laravel 中安装了 react。现在我想像我习惯的那样使用npm start 命令启动反应服务器。

【问题讨论】:

  • 您将窗口变量设置为 lodash,向后读取错误,看来您的问题来自 lodash。检查 lodash 是否已安装或正确导入。我敢打赌,无论您将该窗口变量更改为什么,都不会被定义,因为该变量正在引用未定义的内容!
  • @saas_joel 我没有手动安装 lodash。它与 react 或 laravel 安装一起安装。如何检查它是否正确安装或导入?
  • 试试这个 var _ = require('lodash');而不是使用窗口
  • @saas_joel 我在哪里添加 var _ = require('lodash'); ?
  • 你的start 脚本是从哪里得到的??

标签: reactjs laravel npm


【解决方案1】:

您遇到此问题的原因是因为node 没有window 变量,而您的start 脚本实际上只是尝试使用node 运行resources/js/app.js 文件。

我不确定您对start 脚​​本的目标是什么,但我建议您使用安装随附的devwatchprod 命令。这样,您的代码实际上应该被编译并可以在浏览器中使用。

【讨论】:

  • 我没有添加任何额外的启动脚本,这里是我的 app.js 和 bootstrap.js 文件pastebin.com/ucF1ZFxM
  • @KamrulHasan 好吧,我想你可能有,因为我刚刚安装了一个新版本,我看不到 ` "start": "node resources/js/app.js", ` 在package.json 中。在这种情况下,我建议删除 start 脚本并仅使用其他命令之一,例如npm run dev.
  • 我仍然可以执行 npm run dev。但我想要实现的是使用 npm start 命令运行节点服务器。
  • @KamrulHasan 哦,对了,所以你确实添加了"start": "node resources/js/app.js",(启动脚本)?请您更新您的问题,并简要说明您想要/需要节点服务器的用途,因为它不是很清楚。
  • 我已经更新了我的问题。看看吧。
猜你喜欢
  • 2021-03-30
  • 2020-10-08
  • 2018-05-27
  • 2020-09-18
  • 2021-02-02
  • 2020-11-12
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多