If you find a security vulnerability, do NOT open an issue. Email [email protected] instead.
Describe the bug
Building sanity seems to fail when some dependencies are not hoisted to the top-level node_modules directory.
When using yarn workspaces, packages may not necessarily be hoisted all the time. In my monorepo, some of the "slate" packages lied inside /node_modules/@sanity/form-builder/node_modules instead.
When building using
sanity build I then got the following error:
Error: Errors while building:
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-plain-serializer/lib/slate-plain-serializer.es.js
Module not found: Error: Can't resolve 'slate' in '/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-plain-serializer/lib'
resolve 'slate' in '/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-plain-serializer/lib'
Parsed request is a module
using description file: /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-plain-serializer/package.json (relative path: ./lib)
Field 'browser' doesn't contain a valid alias configuration
after using description file: /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-plain-serializer/package.json (relative path: ./lib)
resolve as module
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-plain-serializer/lib/node_modules doesn't exist or is not a directory
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-plain-serializer/node_modules doesn't exist or is not a directory
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/node_modules doesn't exist or is not a directory
/Users/mikael/git/node_modules doesn't exist or is not a directory
/Users/mikael/git/node_modules doesn't exist or is not a directory
/Users/mikael/node_modules doesn't exist or is not a directory
/Users/node_modules doesn't exist or is not a directory
/node_modules doesn't exist or is not a directory
looking for modules in /Users/mikael/git/yarn_unfocused_issue_repro/node_modules
using description file: /Users/mikael/git/yarn_unfocused_issue_repro/package.json (relative path: ./node_modules)
Field 'browser' doesn't contain a valid alias configuration
after using description file: /Users/mikael/git/yarn_unfocused_issue_repro/package.json (relative path: ./node_modules)
using description file: /Users/mikael/git/yarn_unfocused_issue_repro/package.json (relative path: ./node_modules/slate)
no extension
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate doesn't exist
.js
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.js doesn't exist
.jsx
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.jsx doesn't exist
.es6
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.es6 doesn't exist
.es
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.es doesn't exist
.mjs
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.mjs doesn't exist
.ts
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.ts doesn't exist
.tsx
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.tsx doesn't exist
as directory
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate doesn't exist
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-plain-serializer/lib/node_modules]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-plain-serializer/node_modules]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/node_modules]
[/Users/mikael/git/node_modules]
[/Users/mikael/git/node_modules]
[/Users/mikael/node_modules]
[/Users/node_modules]
[/node_modules]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.js]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.jsx]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.es6]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.es]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.mjs]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.ts]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.tsx]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate]
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-plain-serializer/lib/slate-plain-serializer.es.js 1:0-49
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/node_modules/slate-react/lib/slate-react.es.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/lib/inputs/BlockEditor/EditNode.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/lib/inputs/BlockEditor/BlockEditor.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/lib/inputs/BlockEditor/Input.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/lib/inputs/BlockEditor/SyncWrapper.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/lib/inputs/BlockEditor/index.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/lib/sanity?sanityPart=part%3A%40sanity%2Fform-builder
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/components/BrokenReferences.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/utils/withInitialValue.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/panes/documentPane/DocumentPaneProvider.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/panes/documentPane/index.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/panes/DeskToolPane.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/panes/index.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/tool/DeskToolPanes.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/tool/DeskTool.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/tool/index.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/tool?sanityPart=all%3Apart%3A%40sanity%2Fbase%2Ftool
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/default-layout/lib/defaultLayoutRouter.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/default-layout/lib/components/DefaultLayoutContainer.js?sanityPart=part%3A%40sanity%2Fbase%2Froot
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/base/lib/components/SanityRoot.js?sanityPart=part%3A%40sanity%2Fbase%2Fsanity-root
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/server/lib/browser/entry.js
@ multi /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/normalize.css/normalize.css /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/server/lib/browser/entry.js
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-prop-types/lib/slate-prop-types.es.js
Module not found: Error: Can't resolve 'slate' in '/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-prop-types/lib'
resolve 'slate' in '/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-prop-types/lib'
Parsed request is a module
using description file: /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-prop-types/package.json (relative path: ./lib)
Field 'browser' doesn't contain a valid alias configuration
after using description file: /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-prop-types/package.json (relative path: ./lib)
resolve as module
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-prop-types/lib/node_modules doesn't exist or is not a directory
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-prop-types/node_modules doesn't exist or is not a directory
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/node_modules doesn't exist or is not a directory
/Users/mikael/git/node_modules doesn't exist or is not a directory
/Users/mikael/git/node_modules doesn't exist or is not a directory
/Users/mikael/node_modules doesn't exist or is not a directory
/Users/node_modules doesn't exist or is not a directory
/node_modules doesn't exist or is not a directory
looking for modules in /Users/mikael/git/yarn_unfocused_issue_repro/node_modules
using description file: /Users/mikael/git/yarn_unfocused_issue_repro/package.json (relative path: ./node_modules)
Field 'browser' doesn't contain a valid alias configuration
after using description file: /Users/mikael/git/yarn_unfocused_issue_repro/package.json (relative path: ./node_modules)
using description file: /Users/mikael/git/yarn_unfocused_issue_repro/package.json (relative path: ./node_modules/slate)
no extension
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate doesn't exist
.js
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.js doesn't exist
.jsx
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.jsx doesn't exist
.es6
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.es6 doesn't exist
.es
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.es doesn't exist
.mjs
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.mjs doesn't exist
.ts
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.ts doesn't exist
.tsx
Field 'browser' doesn't contain a valid alias configuration
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.tsx doesn't exist
as directory
/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate doesn't exist
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-prop-types/lib/node_modules]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-prop-types/node_modules]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/node_modules]
[/Users/mikael/git/node_modules]
[/Users/mikael/git/node_modules]
[/Users/mikael/node_modules]
[/Users/node_modules]
[/node_modules]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.js]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.jsx]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.es6]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.es]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.mjs]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.ts]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate.tsx]
[/Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate]
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/slate-prop-types/lib/slate-prop-types.es.js 1:0-111
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/node_modules/slate-react/lib/slate-react.es.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/lib/inputs/BlockEditor/EditNode.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/lib/inputs/BlockEditor/BlockEditor.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/lib/inputs/BlockEditor/Input.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/lib/inputs/BlockEditor/SyncWrapper.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/lib/inputs/BlockEditor/index.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/form-builder/lib/sanity?sanityPart=part%3A%40sanity%2Fform-builder
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/components/BrokenReferences.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/utils/withInitialValue.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/panes/documentPane/DocumentPaneProvider.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/panes/documentPane/index.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/panes/DeskToolPane.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/panes/index.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/tool/DeskToolPanes.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/tool/DeskTool.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/tool/index.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/desk-tool/lib/tool?sanityPart=all%3Apart%3A%40sanity%2Fbase%2Ftool
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/default-layout/lib/defaultLayoutRouter.js
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/default-layout/lib/components/DefaultLayoutContainer.js?sanityPart=part%3A%40sanity%2Fbase%2Froot
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/base/lib/components/SanityRoot.js?sanityPart=part%3A%40sanity%2Fbase%2Fsanity-root
@ /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/server/lib/browser/entry.js
@ multi /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/normalize.css/normalize.css /Users/mikael/git/yarn_unfocused_issue_repro/node_modules/@sanity/server/lib/browser/entry.js
at ~/git/yarn_unfocused_issue_repro/node_modules/@sanity/core/lib/actions/build/buildStaticAssets.js:129:15
at Generator.next ()
at asyncGeneratorStep (~/git/yarn_unfocused_issue_repro/node_modules/@sanity/core/lib/actions/build/buildStaticAssets.js:40:103)
at _next (~/git/yarn_unfocused_issue_repro/node_modules/@sanity/core/lib/actions/build/buildStaticAssets.js:42:194)
To Reproduce
Steps to reproduce the behavior:
I've created a reproduction repository here https://github.com/mikaelkolkinn/yarn_unfocused_issue_repro
It contains four workspaces/packages, where the one that fails is called "sanity-studio".
# initial install
yarn
# build fails
yarn reproduce
Expected behavior
Build succeeds
Which versions of Sanity are you using?
@sanity/cli 1.149.19 (latest: unknown)
@sanity/base 1.149.19 (latest: unknown)
@sanity/cli 1.149.19 (latest: unknown)
@sanity/components 1.149.19 (latest: unknown)
@sanity/core 1.149.19 (latest: unknown)
@sanity/default-layout 1.149.19 (latest: unknown)
@sanity/default-login 1.149.18 (latest: unknown)
@sanity/desk-tool 1.149.19 (latest: unknown)
@sanity/vision 1.149.16 (latest: unknown)
What operating system are you using?
OS X
Which versions of Node.js / npm are you running?
Node version: v14.4.0
Yarn version: 2.1.1
Additional context
I got help pin-pointing the problem from yarnpkg/berry#1677.
Also got a workaround from there, but it would be best if the issue could be resolved properly.
Hi and thank you for reporting! Can you try upgrading your studio and see if the issue still persists?
Hi @vicbergquist, ugrading Sanity Studio seems to have solved the issue.
Thanks.
hi @mikaelkolkinn I'm just a bit curious, if you're using yarn2, why do you still have a node_modules directory? :thinking:
I've tried yesterday to switch some existing sanity app to yarn2 but didn't succeed because it seems that sanity cli try to locate @sanity/base and fails.
Hi @shouze. We had some difficulty getting other parts of our monorepo working without node_modules, which is why we had nodeLinker: node-modules set in .yarnrc.yml.
Indeed works pretty well now :ok_hand: