我正在尝试使用打字稿和纱线工作区设置一个 monorepo 项目。
该项目的结构如下所示:
/example
/packages
/lib1
Run Code Online (Sandbox Code Playgroud)
示例是一个使用这些包用于开发目的的应用程序。
当我使用时yarn tsc --build --force,我收到以下错误:
example/tsconfig.json:6:18 - error TS6310: Referenced project '/packages/intro' may not disable emit.
Run Code Online (Sandbox Code Playgroud)
这是 tsconfig.json 的示例:
/example
/packages
/lib1
Run Code Online (Sandbox Code Playgroud)
以及项目根部的一个:
example/tsconfig.json:6:18 - error TS6310: Referenced project '/packages/intro' may not disable emit.
Run Code Online (Sandbox Code Playgroud)
以及 lib1 的 tsconfig.json:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "./lib"
},
"references": [{ "path": "../packages/intro" }]
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我确实noEmit设置了true,所以我不明白错误是什么。我尝试直接在每个 tsconfig 文件中设置值,但没有按预期执行任何操作。
我在实现一些简单的操作时遇到了困难:我有一个index.html文件由http:// localhost:3200在ruby on rails上提供,它使用http:// localhost:8000在webpack-dev-server 上提供的javascript文件.
所以这就是我所拥有的:
<!doctype html>
<head>
<script crossorigin="anonymous" src="http://localhost:8000/app.js" />
</head>
<!-- ... -->
</html>
Run Code Online (Sandbox Code Playgroud)
我的app.js文件与以下标题一起发送:
Access-Control-Allow-Origin: *
Run Code Online (Sandbox Code Playgroud)
我想要的是能够window.onerror在app.js中覆盖,并查看捕获的错误,而不是"脚本错误".
我错过了什么?
- 编辑 - 因为它可能不够清楚:我的脚本确实加载.对于那件事我没有任何疑问.我的问题是我需要报告发生在其他地方的错误,但我不能这样做,因为app.js中发生的任何错误都报告为"脚本错误"而不是更明确的错误.
-- 编辑 -- 我创建了一个代码和框:https ://codesandbox.io/s/xenodochial-hofstadter-d3jjo
我开始摸不着头脑,想要一些帮助——我想——一个简单的问题。
我有一个呈现受控文本输入的基本 App 组件。提交此输入后,它会在后端创建一条消息,用于更新 redux 存储。这部分似乎一切正常。
我的问题是当我尝试添加一个useEffect挂钩以在添加新消息后重置输入值时。我注意到useEffect依赖的[messages]会在每次渲染时调用,而不仅仅是在messages更改时调用。输入输入的简单行为 - 这会导致每个字符的重新渲染 - 会触发钩子,即使它仍然是相同的值:一个空数组。
基本上我注意到它只有在我useSelector返回相同的数组实例时才能按预期工作。所以如果我只读取state.messages.allIds它会起作用,因为数组不会改变。但是简单地添加 a.map(x => x)使它每次都返回一个新实例。我已经添加了 react-reduxshallowEqual来尝试解决这个问题,但无济于事,我不明白为什么它不能解决我的问题。
const App = () => {
const [message, setMessage] = useState('');
const messages = useSelector(
(state: RootState) => (
state.messages.allIds.map((id: string) => state.messages.byId[id])
),
shallowEqual,
);
useEffect(() => {
console.log('useEffect');
}, [messages]);
// ...
return (
<form onSubmit={/* ... */}>
<input
onChange={event …Run Code Online (Sandbox Code Playgroud) 我正在使用 webpack 构建我的应用程序。我生成 3 个包:app.js、vendor.js 和 manifest.js。由于我已将 UglifyJsPlugin 添加到我的 conf 中,因此还生成了 3 个源映射。
我只想为我的 app.js 包生成一个源映射,因为其他 2 个对我来说没有用。有没有办法告诉 uglifier 只为我想要的块生成源映射,而不是全部?
这是我目前拥有的:
Asset Size Chunks Chunk Names
app.1e1d20f5f417ed9df40d.js 901 kB 1, 2 [emitted] [big] app
app.1e1d20f5f417ed9df40d.js.map 4.24 MB 1, 2 [emitted] app
manifest.05867db2f94981c04486.js 1.43 kB 2 [emitted] manifest
manifest.05867db2f94981c04486.js.map 14.1 kB 2 [emitted] manifest
styles.1e1d20f5f417ed9df40d.css 42.3 kB 1, 2 [emitted] app
styles.1e1d20f5f417ed9df40d.css.map 108 bytes 1, 2 [emitted] app
vendor.2734c5cd65804c943c80.js 1.64 MB 0, 2 [emitted] [big] vendor
vendor.2734c5cd65804c943c80.js.map 11.9 MB 0, 2 …Run Code Online (Sandbox Code Playgroud) chunks ×1
cors ×1
javascript ×1
react-hooks ×1
react-native ×1
reactjs ×1
source-maps ×1
typescript ×1
webpack ×1