Laravel Mix 上的 npm run dev 发生跨环境内存泄漏

问题描述 投票:0回答:3

我正在 Windows 10 计算机上的 Docker Toolbox 实例上安装 Laravel 项目(版本 6.17.1)。在我的 Docker 实例中,我可以很好地运行

composer install
,也可以很好地运行
npm i
,但是当我运行
npm run dev
时,但最初,我收到了有关跨环境的错误:

sh: 1: cross-env: not found
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! @ development: `cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the @ development script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

然后我手动安装了 cross-env,现在我知道这个节点模块已经安装了,因为在我的 node_modules 文件夹中我可以看到一个 cross-env 文件夹 - 但是,错误消息仍然存在。

查看其他一些答案,我可以看到我可能需要更改我的 package.json 文件 - 脚本最初看起来像这样:

"scripts": {
    "dev": "npm run development",
    "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "npm run development -- --watch",
    "watch-poll": "npm run watch -- --watch-poll",
    "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
    "prod": "npm run production",
    "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},

按照 florencebib 的示例,我的 package.json 现在看起来像:

{
    "private": true,
    "scripts": {
        "dev": "node node_modules/cross-env/src/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
        "watch": "node node_modules/cross-env/src/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
        "watch-poll": "node node_modules/cross-env/src/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
        "hot": "node node_modules/cross-env/src/bin/cross-env.js NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
        "production": "node node_modules/cross-env/src/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
    },
    "devDependencies": {
        "axios": "^0.19",
        "bootstrap": "^4.0.0",
        "cross-env": "^7.0.2",
        "jquery": "^3.2",
        "laravel-mix": "^5.0.1",
        "lodash": "^4.17.13",
        "popper.js": "^1.12",
        "resolve-url-loader": "^3.1.0",
        "sass": "^1.15.2",
        "sass-loader": "^8.0.0",
        "vue-template-compiler": "^2.6.11"
    },
    "dependencies": {
        "font-awesome": "^4.7.0"
    }
}

当我更新了 package.json 时,我运行

rm -rf node_modules rm package-lock.json yarn.lock npm cache clear --force
,安装节点模块并再次尝试运行 dev,但现在我收到以下错误:

<--- JS stacktrace --->

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0xa295e0 node::Abort() [node]
 2: 0x9782df node::FatalError(char const*, char const*) [node]
 3: 0xb99c2e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
 4: 0xb99fa7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
 5: 0xd3a3b5  [node]
 6: 0xd3ad5b v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [node]
 7: 0xd48b52 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [node]
 8: 0xd499a5 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]
 9: 0xd4c36c v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
10: 0xd1ba0b v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [node]
11: 0x104bdaf v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [node]
12: 0x13a5a99  [node]
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ dev: `node node_modules/cross-env/src/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js`
npm ERR! Exit status 1

在达到这一点之前我尝试过的其他事情:

  • npm install --save-dev 跨环境
  • npm 我跨环境-g
  • npm 重建
  • 删除并重新安装节点模块
  • 清除缓存
  • 使用 Yarn 代替 npm

我是否做错了什么导致内存泄漏?或者我在这方面走错了路?任何建议表示赞赏。

javascript node.js npm laravel-mix cross-env
3个回答
0
投票

最近在启动几个新容器后我遇到了同样的问题,我的旧容器向我显示了这个错误。 我已将分配给 docker 的 RAM 从 2GB 增加到 5GB,并且它不再失败。


0
投票
  1. 将您的 Nodejs 更新到最新版本。

  2. 删除“node_modules”文件夹,然后运行以下命令

    npm install 
    npm run dev
    

0
投票
{
    "private": true,
    "scripts": {
        "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": {
        "@tailwindcss/forms": "^0.4.0",
        "alpinejs": "^3.4.2",
        "autoprefixer": "^10.4.2",
        "axios": "^0.21",
        "bootstrap": "^4.6.0",
        "jquery": "^3.5",
        "laravel-mix": "^6.0.6",
        "laravel-mix-merge-manifest": "^2.1.0",
        "lodash": "^4.17.19",
        "popper.js": "^1.16",
        "postcss": "^8.4.6",
        "sass": "^1.32.1",
        "sass-loader": "^10.1.1",
        "tailwindcss": "^3.0.18"
    },
    "dependencies": {
        "codemirror": "^6.0.1"
    }
}

将其粘贴到 package.json 中,然后删除 package-lock.json ,删除 node_modules 文件夹并运行 npm install 。然后是 npm run dev ,仅此而已......它 100% 对我有用。LARAVEL 8.x , 9.x ,6.x

© www.soinside.com 2019 - 2024. All rights reserved.