我有一个yarn
workspace
monorepo
不同的包包含可重用代码的地方。像
@pkg/styles
,
@pkg/ui-components
所有这些包都es modules
(import export statements)
在我的由 webpack 构建的非 ssr 应用程序中使用,就像这样。
例如
import { box } from '@pkg/styles'
import {Button} from '@pkg/ui-components'
现在我需要添加remix-run
到同一个 monorepo 并且一切正常,直到我开始导入这些本地包。我得到这个错误
import box from './box';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1031:15)
at Module._compile (node:internal/modules/cjs/loader:1065:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
如果我没记错的话,这是因为esbuild
期望所有内容都node_modules
被预编译。并在转译阶段简单地忽略它们。
我需要告诉我的编译器在编译时考虑我的本地包,这在我们使用时非常容易做到webpack
。但我不确定如何在remix-run
内部使用它和 esbuild。remix-run github 上几乎没有问题,但似乎没有任何帮助。