3

我试图在我的核心 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 中使用模块的新手,在此先感谢。

4

1 回答 1

8

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

至于你的错误:

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

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

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

(键入Ctrl+C两次退出节点 btw。:])

于 2017-01-22T04:14:16.347 回答