【问题标题】:Cannot find module 'rxjs-compat/Subscription'找不到模块“rxjs-compat/订阅”
【发布时间】:2019-01-30 23:41:12
【问题描述】:

我正在尝试按照指南 here 从 rx5 迁移到 rx6。最初,我与 rxjs-compat 软件包一起安装,一切正常。但是,当我尝试删除 rxjs-compat 包时,我收到了异常 Cannot find module 'rxjs-compat/Subscription'。我使用了 rxjs-5-to-6-migrate 来执行迁移

我在订阅中使用这个语句: import { Subscription } from "rxjs";

作为参考,这是我的分支-https://github.com/akshita31/omnisharp-vscode/tree/rxjs_update,这是列出所有更改的相应拉取请求-https://github.com/OmniSharp/omnisharp-vscode/pull/2830

【问题讨论】:

标签: rxjs rxjs5 rxjs6


【解决方案1】:

我将所有依赖更新到最新版本并使用rxjs-tslint-rules如下

  1. npm install rxjs-tslint-rules --save-dev
  2. 然后在我的 tslint.json 中添加规则"rxjs-no-compat" : true
  3. 在项目文件夹中执行./node_modules/.bin/tslint -c tslint.json -p tsconfig.json。这将给出所有无效导入集
  4. 解决无效导入,然后尝试删除 rxjs-compat 包。
  5. 我还清理了我的 npm 缓存 - npm cache clean --force
  6. 如果没有更多错误,我们也可以从 package.json 中删除上述 tslint 依赖 更多细节可以在问题中找到。

感谢@cartant 的帮助

【讨论】:

    【解决方案2】:

    您是否还有一些仍在使用rxjs-compat 的导入?

    随着从 rxjs 5 到 6 的迁移,您需要非常小心所有的导入,因为您不想从错误的路径导入某些模块。相信rxjs-tslint可以帮到你。

    【讨论】:

    • rxjs-5-to-6-migrate -p ./ 我使用上面的代码来执行迁移,当我现在运行它时,我没有收到任何错误/提示。
    • 另外我正在使用 tsc 将我的打字稿源转换为 javascript
    • ``` { "compilerOptions": { "target": "es6", "module": "commonjs", "outDir": "out", "lib": [ "es6" ] ,“inlineSourceMap”:真,“moduleResolution”:“节点”,“alwaysStrict”:真,“noImplicitAny”:真,“skipLibCheck”:真,“noImplicitThis”:真,“noUnusedLocals”:真,“noFallthroughCasesInSwitch”:真, }, "排除": [ "语法", ".vscode-test", "vsix" ] }
    • 这是我的 tsconfig.json
    猜你喜欢
    • 2019-02-22
    • 2021-10-21
    • 2019-03-03
    • 2019-03-06
    • 2018-06-15
    • 1970-01-01
    • 2016-08-10
    • 2019-01-12
    • 2019-02-15
    相关资源
    最近更新 更多