Repository: next.js
Issue: Node modules inlined in dev mode `.next/server/app` files
Labels: bug

### Verify canary release

- [X] I verified that the issue exists in the latest Next.js canary release

### Provide environment information

```bash
Operating System:
      Platform: linux
      Arch: x64
      Version: #1 SMP Fri Jan 27 02:56:13 UTC 2023
    Binaries:
      Node: 18.13.0
      npm: 9.8.0
      Yarn: 1.22.18
      pnpm: 8.6.9
    Relevant Packages:
      next: 13.4.12
      eslint-config-next: 13.4.12
      react: 18.2.0
      react-dom: 18.2.0
      typescript: 5.1.3
    Next.js Config:
      output: N/A
```


### Which area(s) of Next.js are affected? (leave empty if unsure)

App Router

### Link to the code that reproduces this issue or a replay of the bug

https://github.com/DigitalerSchulhof/digitaler-schulhof

### To Reproduce

Setup is complex as it requires a locally linked package that isn't published to anywhere yet. I hope this issue is fixable in theory only, however, I'd be happy to provide code and instructions if required.

### Describe the Bug

When running `next dev`, the generated `.next/server/app/...` files are several 10s of MB large since they contain all required node modules inlined.  `next/dist` modules and native Node.js modules are the only ones that required from actual `node_modules`:
```js
/***/ "dns":
/*!**********************!*\
  !*** external "dns" ***!
  \**********************/
/***/ ((module) => {

"use strict";
module.exports = require("dns");

/***/ }),
```

All remaining files are inlined along the following way: 
```js
/***/ "(rsc)/./node_modules/.pnpm/@protobufjs+inquire@1.1.0/node_modules/@protobufjs/inquire/index.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/.pnpm/@protobufjs+inquire@1.1.0/node_modules/@protobufjs/inquire/index.js ***!
  \************************************************************************************************/
/***/ ((module) => {

"use strict";
eval("\nmodule.exports = inquire;\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */ function inquire(moduleName) {\n    try {\n        var mod = eval(\"quire\".replace(/^/, \"re\"))(moduleName); // eslint-disable-line no-eval\n        if (mod && (mod.length || Object.keys(mod).length)) return mod;\n    } catch (e) {} // eslint-disable-line no-empty\n    return null;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQHByb3RvYnVmanMraW5xdWlyZUAxLjEuMC9ub2RlX21vZHVsZXMvQHByb3RvYnVmanMvaW5xdWlyZS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSxPQUFPQyxPQUFPLEdBQUdDO0FBRWpCOzs7OztDQUtDLEdBQ0QsU0FBU0EsUUFBUUMsVUFBVTtJQUN2QixJQUFJO1FBQ0EsSUFBSUMsTUFBTUMsS0FBSyxRQUFRQyxPQUFPLENBQUMsS0FBSSxPQUFPSCxhQUFhLDhCQUE4QjtRQUNyRixJQUFJQyxPQUFRQSxDQUFBQSxJQUFJRyxNQUFNLElBQUlDLE9BQU9DLElBQUksQ0FBQ0wsS0FBS0csTUFBTSxHQUM3QyxPQUFPSDtJQUNmLEVBQUUsT0FBT00sR0FBRyxDQUFDLEVBQUUsK0JBQStCO0lBQzlDLE9BQU87QUFDWCIsInNvdXJjZXMiOlsid2VicGFjazovL0Bkc2gvZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvLnBucG0vQHByb3RvYnVmanMraW5xdWlyZUAxLjEuMC9ub2RlX21vZHVsZXMvQHByb3RvYnVmanMvaW5xdWlyZS9pbmRleC5qcz8zMzQ4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5tb2R1bGUuZXhwb3J0cyA9IGlucXVpcmU7XHJcblxyXG4vKipcclxuICogUmVxdWlyZXMgYSBtb2R1bGUgb25seSBpZiBhdmFpbGFibGUuXHJcbiAqIEBtZW1iZXJvZiB1dGlsXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGVOYW1lIE1vZHVsZSB0byByZXF1aXJlXHJcbiAqIEByZXR1cm5zIHs/T2JqZWN0fSBSZXF1aXJlZCBtb2R1bGUgaWYgYXZhaWxhYmxlIGFuZCBub3QgZW1wdHksIG90aGVyd2lzZSBgbnVsbGBcclxuICovXHJcbmZ1bmN0aW9uIGlucXVpcmUobW9kdWxlTmFtZSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB2YXIgbW9kID0gZXZhbChcInF1aXJlXCIucmVwbGFjZSgvXi8sXCJyZVwiKSkobW9kdWxlTmFtZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXZhbFxyXG4gICAgICAgIGlmIChtb2QgJiYgKG1vZC5sZW5ndGggfHwgT2JqZWN0LmtleXMobW9kKS5sZW5ndGgpKVxyXG4gICAgICAgICAgICByZXR1cm4gbW9kO1xyXG4gICAgfSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJpbnF1aXJlIiwibW9kdWxlTmFtZSIsIm1vZCIsImV2YWwiLCJyZXBsYWNlIiwibGVuZ3RoIiwiT2JqZWN0Iiwia2V5cyIsImUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@protobufjs+inquire@1.1.0/node_modules/@protobufjs/inquire/index.js\n");

/***/ }),
```

### Expected Behavior

This is an issue for several reasons:
- I assume this is a very costly process. It unnecessarily copies numerous megabytes and writes them to disk (for every change, I'd assume).\
  Wild guess (I haven't followed the thread in a while), but this might be related to !48748 and is probably the reason I get 1000+ modules logged: `compiled client and server successfully in 5.1s (1150 modules)`
- Some modules like `@grpc/grpc-js` or even `graphql` require reference equality for certain `instanceof` checks, which fail when this is used: `Channel credentials must be a ChannelCredentials object`.

---

The latter fails because the credentials object is created from the `(rsc)/./node_modules/.pnpm/@grpc+grpc-js@1.8.18/node_modules/@grpc/grpc-js/build/src/channel-credentials.js` file. The gRPC client is stored in a separate, locally linked package that doesn't share node_modules with the main project. I think this is important because if it did, it would use the same modules.

Because the `@dsh/protocols` package is linked to `../protocols` (linked because still in development), that file uses the `(rsc)/./node_modules/.pnpm/@grpc+grpc-js@1.8.18/node_modules/@grpc/grpc-js/build/src/channel-credentials.js` object to do the `instanceof` check. This obviously fails.