ReferenceError:在ReactJS中要求Shelljs时未定义进程

时间:2017-01-22 00:47:59

标签: javascript reactjs npm ecmascript-6 shelljs

我试图在我的核心React组件中要求shelljs。

import React, { Component } from 'react';
import {render} from 'react-dom';
import Header from './components/Header';

const shell = require('shelljs');

class App extends Component {
    render() {
        console.log("First component mounting");
        console.log("First component mounting");
        return (
            <Header />
        )
    }
}

render(<App />, document.getElementById('root'));

当我跑步时

webpack build

我没有错误,然后我运行我的服务器,我得到以下控制台错误。

我正在使用jekyll作为我的服务器端。目前正在从正常的jekyll实现过渡到React。 React很好实现,因为我在导入shelljs模块之前测试了Header组件

ReferenceError: process is not defined

我很想在javascript中使用模块,提前谢谢。

1 个答案:

答案 0 :(得分:7)

我猜你不会真的意味着使用你的shell常量,因为你没有在你的React组件中的任何地方引用它。 Shelljs看起来像是专门用于命令行的工具。

至于你的错误:

process是Node环境中的全局变量。由于React在浏览器中运行,并且您的组件将在浏览器中呈现,因此组件的上下文中将不存在process

尝试打开Chrome DevTools(或您使用的任何浏览器的开发者工具),然后输入process。你会得到一个TypeError,因为它不存在。但是,存在的是全局window变量。

现在,打开命令行并输入node以打开Node.js REPL。 在这里输入process,你会发现它是一个包含很多属性和值的对象。接下来,输入window并按Enter键。此处不存在window,因为它只存在于浏览器中。

(键入 Ctrl + C 两次以退出Node btw。:])