Node.js 编译我不需要的文件。它是如何工作的?

Node.js compiles files I did not require. How does that work under the hood?

我在 node.js 中遇到了一个我无法理解的错误。 我有一个我根本不需要的文件,但在模块系统加载和编译中找到了它,我不想要它,因为它只会在客户端上提供。

这是 babel 的设置:

bootstrap.js

require('babel/register');
require('./server/index');

index.js与main.jsx没有任何关系。不过这里是它的导入模块:

index.js

import express from 'express';
import routes from './routes';
import path from 'path';

但不知何故 node.js 试图加载和编译 main.jsx 这给了我这样的错误:

/home/minheq/Git/react_app/node_modules/react/lib/invariant.js:49
throw error;
^

Error: Invariant Violation: You cannot use <HistoryLocation> without a DOM
at invariant (/home/minheq/Git/react_app/node_modules/react/lib/invariant.js:42:15)
at createRouter (/home/minheq/Git/react_app/node_modules/react-router/lib/createRouter.js:131:5)
at Object.runRouter [as run] (/home/minheq/Git/react_app/node_modules/react-router/lib/runRouter.js:40:16)
at Object.<anonymous> (/home/minheq/Git/react_app/app/main.jsx:6:10)
at Module._compile (module.js:430:26)
at normalLoader (/home/minheq/Git/react_app/node_modules/babel-core/lib/api/register/node.js:199:5)
at Object.require.extensions.(anonymous function) [as .jsx] (/home/minheq/Git/react_app/node_modules/babel-core/lib/api/register/node.js:216:7)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)

特别是这一行:

at Object.<anonymous> (/home/minheq/Git/react_app/app/main.jsx:6:10)'

关于这可能是如何发生的任何参考?谢谢!

main.jsx的输入来自这一行:

import routes from './routes';

在您的错误堆栈跟踪中,您会看到:

react-router/lib/runRouter.js

关于 Invariant Violation,参见 this issue on Github