我在运行 Ubuntu 18.04.3 LTS 的数字海洋 Droplet 上有一个应用程序。
我将存储库克隆到 Droplet 中并安装节点 10 并构建必需品。
然后当我执行 npm run build 时我得到这个:
Error: Cannot find module 'react-dev-utils/chalk'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/myapp/scripts/build.js:19:15)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
我尝试通过降级react-dev-utils来解决这个问题
npm i [email protected]
但是后来我得到了这些错误:
==== JS stack trace =========================================
0: ExitFrame [pc: 0x1ea12c15be1d]
Security context: 0x1947c8e9e6c1 <JSObject>
1: /* anonymous */ [0x30c82ea822c1] [/myapp/node_modules/webpack-sources/node_modules/source-map/lib/source-node.js:~342] [pc=0x1ea12d633728](this=0x0a79fda8d461 <JSGlobal Object>,chunk=0x1170cdcc1899 <String[6]: target>,original=0x26e0d9395289 <Object map = 0x1d7289a35fd1>)
2: SourceNode_walk [0x3581cd4fb1f1] [/myapp/node_modules/webpack-sourc...
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0x8fb090 node::Abort() [node]
2: 0x8fb0dc [node]
3: 0xb033ae v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
4: 0xb035e4 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
5: 0xef7642 [node]
6: 0xef7748 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [node]
7: 0xf03822 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [node]
8: 0xf04154 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]
9: 0xf06dc1 v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [node]
10: 0xed0244 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [node]
11: 0x117031e v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [node]
12: 0x1ea12c15be1d
Aborted (core dumped)
npm ERR! code ELIFECYCLE
npm ERR! errno 134
npm ERR! [email protected] build: `node scripts/build.js`
npm ERR! Exit status 134
npm ERR!
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-08-11T13_15_27_180Z-debug.log
日志文件是:
0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'build' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prebuild', 'build', 'postbuild' ]
5 info lifecycle [email protected]~prebuild: [email protected]
6 info lifecycle [email protected]~build: [email protected]
7 verbose lifecycle [email protected]~build: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]~build: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/myapp/node_modules/.bin:/usr/local/sbi$
9 verbose lifecycle [email protected]~build: CWD: /myapp
10 silly lifecycle [email protected]~build: Args: [ '-c', 'node scripts/build.js' ]
11 silly lifecycle [email protected]~build: Returned: code: 134 signal: null
12 info lifecycle [email protected]~build: Failed to exec build script
13 verbose stack Error: [email protected] build: `node scripts/build.js`
13 verbose stack Exit status 134
13 verbose stack at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:198:13)
13 verbose stack at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:198:13)
13 verbose stack at maybeClose (internal/child_process.js:982:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
14 verbose pkgid [email protected]
15 verbose cwd /myapp
16 verbose Linux 4.15.0-66-generic
17 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "build"
18 verbose node v10.22.0
19 verbose npm v6.14.6
20 error code ELIFECYCLE
21 error errno 134
22 error [email protected] build: `node scripts/build.js`
22 error Exit status 134
23 error Failed at the [email protected] build script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 134, true ]
首先尝试这些方法可能会很有用,以确保它不仅仅是与缓存或损坏的包相关:
删除node_modules和package-lock.json:
rm -rf node_modules package-lock.json
清除缓存:
npm cache clean --forc
e
重新安装 npm:
npm install
更新节点:
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
更新NPM:
npm install -g npm
确保安装与您的项目兼容的特定 React 工具版本:
npm install [email protected] // Change the version to what you need
以这种方式增加内存分配:
export NODE_OPTIONS=--max_old_space_size=4096
npm run build
或者直接使用您的命令:
NODE_OPTIONS=--max_old_space_size=4096 npm run build