小编nse*_*ier的帖子

Typescript/yarn 工作区 - 引用的项目可能不会禁用发射

我正在尝试使用打字稿和纱线工作区设置一个 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 文件中设置值,但没有按预期执行任何操作。

typescript react-native yarn-workspaces

11
推荐指数
1
解决办法
1万
查看次数

修复js"脚本错误"

我在实现一些简单的操作时遇到了困难:我有一个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.onerrorapp.js中覆盖,并查看捕获的错误,而不是"脚本错误".

我错过了什么?

- 编辑 - 因为它可能不够清楚:我的脚本确实加载.对于那件事我没有任何疑问.我的问题是我需要报告发生在其他地方的错误,但我不能这样做,因为app.js中发生的任何错误都报告为"脚本错误"而不是更明确的错误.

javascript cors webpack-dev-server

6
推荐指数
1
解决办法
1181
查看次数

useSelector 钩子和重新渲染

-- 编辑 -- 我创建了一个代码和框: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)

reactjs react-hooks

6
推荐指数
1
解决办法
6776
查看次数

仅为某些块生成源映射

我正在使用 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 source-maps webpack

5
推荐指数
1
解决办法
3140
查看次数