开玩笑 - 无法从“source-map-support.js”中找到模块“source-map”

Posted

技术标签:

【中文标题】开玩笑 - 无法从“source-map-support.js”中找到模块“source-map”【英文标题】:Jest - Cannot find module 'source-map' from 'source-map-support.js' 【发布时间】:2019-03-26 05:20:24 【问题描述】:

我遇到了错误:

Cannot find module 'source-map' from 'source-map-support.js'
Ran all test suites matching /Foo-test/i.
T:\public_html\testProj>jest Foo-test
FAIL  //XXXX.de/XXXX/Users/XXX/public_html/testProj/src/__tests__/Foo-test.js
? Test suite failed to runtml/testProj/src/__tests__/Foo-test.js
Cannot find module 'source-map' from 'source-map-support.js'
at Resolver.resolveModule (T:/public_html/testProj/node_modules/jest-resolve/build/index.js:221:17)

如果我尝试使用 Jest 运行测试。

我的 .babelrc 看起来像这样:


  "presets": ["env", "react"],
  "sourceMaps": "both",
  "plugins": [
    "add-module-exports",
    "react-hot-loader/babel",
    "source-map-support"
  ]

我的 package.json 看起来像这样:


  "name": "testproject",
  "version": "1.8.0",
  "main": "index.js",
  "license": "MIT",
  "private": true,
  "devDependencies": 
    "@babel/runtime": "^7.0.0-rc.1",
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.3",
    "babel-plugin-add-module-exports": "^0.2.1",
    "babel-preset-env": "^1.6.1",
    "babel-preset-react": "^6.24.1",
    "copy-webpack-plugin": "^4.5.2",
    "css-hot-loader": "^1.3.9",
    "eslint": "4.9.0",
    "eslint-config-airbnb": "^16.1.0",
    "eslint-loader": "^2.0.0",
    "eslint-plugin-import": "2.7.0",
    "eslint-plugin-jsx-a11y": "6.0.2",
    "eslint-plugin-react": "7.4.0",
    "file-loader": "^1.1.11",
    "foundation-sites": "^6.4.4-rc1",
    "node-sass": "^4.8.3",
    "prettier": "^1.14.2",
    "react-hot-loader": "4.1.3",
    "sass-loader": "^6.0.7",
    "source-map": "^0.7.3",
    "webpack": "^4.0.1",
    "webpack-cli": "^2.0.9",
    "webpack-dev-server": "^3.0.0"
  ,
  "dependencies": 
    "@material-ui/core": "^1.5.0",
    "axios": "^0.18.0",
    "babel-jest": "^23.6.0",
    "chai": "^4.2.0",
    "core-js": "^2.5.3",
    "enzyme": "^3.7.0",
    "enzyme-adapter-react-16": "^1.6.0",
    "jest": "^23.6.0",
    "prop-types": "^15.6.0",
    "react": "^16.3.0",
    "react-accessible-accordion": "^2.4.4",
    "react-dom": "^16.3.0",
    "react-redux": "^5.0.7",
    "react-router-dom": "^4.2.2",
    "react-string-replace": "^0.4.1",
    "redux": "^3.7.2",
    "redux-thunk": "^2.3.0",
    "sinon": "^7.0.0"
  ,
  "scripts": 
    "dev": "webpack-dev-server --hot",
    "build": "webpack --colors --profile --progress --env.mode production",
    "lint": "eslint ./src/ --ext .js,.jsx",
    "test": "jest"
  ,
  "jest": 
    "moduleDirectories": [
      "node_modules",
      "src"
    ],
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx"
    ]
  

测试本身似乎没问题,但我还是得到了错误。

我尝试了不同的解决方案:

-有人说有必要将这些配置添加到 package.json 中:

"jest": 
    "moduleDirectories": [
      "node_modules",
      "src"
    ],
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx"
    ]
  

但我也没有运气。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

我发现了一个新情况,还有一种可能是安装时出错,重新安装ts-node解决问题

【讨论】:

【参考方案2】:

确保拥有:

moduleDirectories: ["node_modules"]

不是:

moduleDirectories: ["/node_modules/"]

这里不要省略 node_modules。

【讨论】:

【参考方案3】:

我通过在同一个驱动器中运行项目和节点来解决问题。 即以前我的代码放在Q:/ 驱动器中,我的nodejs 安装在C:/ 驱动器中。 当我开玩笑时,它一直在说Cannot find module 'source-map' from 'source-map-support.js'。 一旦我在C:/ 中打开我的项目后,它就可以工作了。

【讨论】:

所以我认为您需要将您的项目从T:/ 移动到通常安装节点的C:/【参考方案4】:

在 VS Code 中使用 Jest 测试运行程序时遇到此问题。 从https://github.com/facebook/jest/issues/6880#issuecomment-441499110 获取指针,我注意到我的jest.config.js 包含

    moduleDirectories: ["<rootDir>/node_modules", "<rootDir>/ClientApp"]

改成

    moduleDirectories: ["node_modules", "ClientApp"]

解决了问题。

【讨论】:

【参考方案5】:

仅供参考,这只是在我工作时发生的。我还不够专业,无法理解幕后发生的事情,但我的问题的根源是我的项目在主终端的开发模式下在 webpack 中运行,同时我试图运行在第二个终端进行测试。

一旦我停止了开发服务器,之后测试就可以正常运行了。

【讨论】:

以上是关于开玩笑 - 无法从“source-map-support.js”中找到模块“source-map”的主要内容,如果未能解决你的问题,请参考以下文章

开玩笑无法解析模块别名

开玩笑:测试套件无法运行,意外令牌 =

开玩笑在 Expo 上运行时无法识别 .jsx 文件

开玩笑:测试套件无法运行,SyntaxError:意外的令牌导入

开玩笑无法读取 null 的属性“createEvent”

VSCode 无法识别开玩笑的自定义匹配器