所以我试图在端口80上运行我的react dev服务器,我需要使用sudo来使用PORT = 80
但是当我尝试使用来启动服务器时
sudo npm start
它返回如下错误:
events.js:183
throw er; // Unhandled 'error' event
^
Error: spawn cmd.exe ENOENT
at _errnoException (util.js:1022:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
at onErrorNT (internal/child_process.js:372:16)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! counter-app@0.1.0 start: `react-scripts start`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the counter-app@0.1.0 start 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:
the log file
日志文件:
0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/local/bin/npm', 'start' ]
2 info using npm@6.12.1
3 info using node@v8.10.0
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle counter-app@0.1.0~prestart: counter-app@0.1.0
6 info lifecycle counter-app@0.1.0~start: counter-app@0.1.0
7 verbose lifecycle counter-app@0.1.0~start: unsafe-perm in lifecycle true
8 verbose lifecycle counter-app@0.1.0~start: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/mnt/d/project/excercises/node/react$9 verbose lifecycle counter-app@0.1.0~start: CWD: /mnt/d/project/excercises/node/react/counter-app
10 silly lifecycle counter-app@0.1.0~start: Args: [ '-c', 'react-scripts start' ]
11 silly lifecycle counter-app@0.1.0~start: Returned: code: 1 signal: null
12 info lifecycle counter-app@0.1.0~start: Failed to exec start script
13 verbose stack Error: counter-app@0.1.0 start: `react-scripts start`
13 verbose stack Exit status 1
13 verbose stack at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack at emitTwo (events.js:126:13)
13 verbose stack at EventEmitter.emit (events.js:214:7)
13 verbose stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at emitTwo (events.js:126:13)
13 verbose stack at ChildProcess.emit (events.js:214:7)
13 verbose stack at maybeClose (internal/child_process.js:925:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid counter-app@0.1.0
15 verbose cwd /mnt/d/project/excercises/node/react/counter-app
16 verbose Linux 4.4.0-18362-Microsoft 17 verbose argv "/usr/bin/node" "/usr/local/bin/npm" "start" 18 verbose node v8.10.0 19 verbose npm v6.12.1
20 error code ELIFECYCLE
21 error errno 1
22 error counter-app@0.1.0 start: `react-scripts start`
22 error Exit status 1
23 error Failed at the counter-app@0.1.0 start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
但是如果我只使用“ npm start”,它就可以很好地工作,但是我想使用端口80
答案 0 :(得分:1)
启动服务器时您是否已经尝试定义端口?
set PORT= 80 && node app.js
您还可以将package.json更新为仅使用npm run start
。
package.json:
...
"scripts": {
"start": "set PORT= 80 && node app.js"
...
答案 1 :(得分:0)
也许您正在寻找错误的解决方案。用npm start
运行sudo
是一个坏主意。
相反;您可以转发端口 80 以响应端口 3000
sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 3000
https://coderwall.com/p/plejka/forward-port-80-to-port-3000
这是简单的方法;但是如果它是生产服务器,则可以搜索nginx
方式
祝你好运