【问题标题】:Ionic 3: Build in “prod” mode: Cannot find module “.”Ionic 3:在“prod”模式下构建:找不到模块“。”
【发布时间】:2018-11-15 17:28:21
【问题描述】:

我们有一个大的Ionic 应用程序,我们正尝试在production 模式下build,因为它几乎准备好了。我们发现的第一个问题是编译时出现“JavaScript heap out of memory”错误,但我们通过为节点分配更多内存来修复它:

"ionic:build": "node --max-old-space-size=16384 ./node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js build",

npm run ionic:build -- --prod

使用此命令成功构建应用程序,但如果我打开它,我会收到以下错误:

Uncaught Error: Cannot find module “.”
at vendor.js:1
at vendor.js:1
at Object. (vendor.js:1)
at e (vendor.js:1)
at Object. (main.js:1)
at e (vendor.js:1)
at window.webpackJsonp (vendor.js:1)
at main.js:1

我搜索了一下,发现它可能是由require引起的,但我们没有使用它。对可能发生的事情或我们可以做些什么来调试问题有任何想法吗?有没有办法在不缩小 JS 的情况下使用“--prod”?

这是我的环境:

cli packages: (/usr/local/lib/node_modules)

@ionic/cli-utils  : 1.19.2
ionic (Ionic CLI) : 3.20.0
global packages:

cordova (Cordova CLI) : 6.5.0 
Gulp CLI              : [09:06:54] CLI version 3.9.1 [09:06:54] Local version 3.9.1
local packages:

@ionic/app-scripts : 3.1.9
Cordova Platforms  : android 6.1.2 ios 4.3.1
Ionic Framework    : ionic-angular 3.9.2
System:

Android SDK Tools : 25.2.5
ios-deploy        : 1.9.1 
ios-sim           : 5.0.8 
Node              : v8.6.0
npm               : 5.3.0 
OS                : macOS High Sierra
Xcode             : Xcode 9.3.1 Build version 9E501 
Misc:

backend : legacy

谢谢!

【问题讨论】:

    标签: javascript angular ionic-framework ionic3


    【解决方案1】:

    对我来说工作使用

    "@ionic/app-scripts": "3.2.3",
    "typescript": "2.7.1",
    

    如果你想使用 typescript v3,你可以尝试使用其他 adicional 选项构建禁用 aot(我认为是使用 prod 标签的问题)

    --release --aot false --environment prod --output-hashing all --sourcemaps false --extract-css true --named-chunks false --build-optimizer true --minifyjs=true --minifycss=true --optimizejs=true
    

    如果没有,我建议你迁移到 ionic4/5

    【讨论】:

      【解决方案2】:

      使用新版本时出现此错误,我检查了 ionic-angular 导入,一切正常。

      package.json

      "typescript": "3.1.6"
      

      离子信息

       ionic (Ionic CLI)  : 4.4.0
         Ionic Framework    : ionic-angular 3.9.2
         @ionic/app-scripts : 3.2.0
      
      Cordova:
      
         cordova (Cordova CLI) : 8.1.1 (cordova-lib@8.1.0)
         Cordova Platforms     : android 7.0.0, browser 5.0.3
         Cordova Plugins       : no whitelisted plugins (0 plugins total)
      

      错误

      vendor.js:138159 Uncaught Error: Cannot find module "."
          at webpackMissingModule (vendor.js:138159)
          at vendor.js:138159
          at Object.<anonymous> (vendor.js:138168)
          at __webpack_require__ (vendor.js:55)
          at Object.<anonymous> (main.js:16031)
          at __webpack_require__ (vendor.js:55)
          at webpackJsonpCallback (vendor.js:26)
          at main.js:1
      

      【讨论】:

      • @exwquielc 你是怎么解决这个问题的?
      【解决方案3】:

      @ionic/app-scriptstypescript 中删除^ 对我有用,如下所示:

      "devDependencies": {
          "@ionic/app-scripts": "3.1.9",
          "typescript": "2.8.3"
        }
      

      【讨论】:

        【解决方案4】:

        我遇到了类似的问题,但错误的 typescript 包是从其他依赖项目以及 VS Code 的组合中提取的。我通过将@ionic/app-scriptstypescriptexact 版本(不是^~)固定到我需要的版本来解决它。

        "devDependencies": { "@ionic/app-scripts": "3.1.9", "typescript": "2.6.2" }

        【讨论】:

          【解决方案5】:

          我发现了问题。在我使用的 package.json 中:

          "typescript": "^2.9.1",
          

          将版本降低到~2.6.2 为我修复了它。

          【讨论】:

          • 这不应该被认为是一种修复,而是一种解决方法。我已经使用"typescript": "^2.9.2" 一段时间了,今天发布新版本时,ionic-cli 4.1.1 遇到了同样的错误。
          • 在我的项目中,我无法降低打字稿版本。还有其他解决方法吗?
          • 在这里添加最初的症状,希望它被正确索引:我在调试版本很好并且生产版本显示启动画面然后是黑页之后到达这里;我通过AndroidManifest.xml在生产版本中启用了调试,终于找到了这个页面。
          • 对于像 rxjs 这样的依赖项,我需要 typescript 3。这个问题的原因是什么?降级打字稿版本不应该是最好的解决方案。此错误仅发生在产品构建中。 (--release --prod)
          • @Dominik 和 exequielc 从那时起你找到解决方案了吗?我无法降低打字稿版本
          猜你喜欢
          • 2020-04-01
          • 2017-08-21
          • 1970-01-01
          • 2018-10-08
          • 2019-02-15
          • 2018-05-28
          • 2018-04-23
          • 1970-01-01
          • 2020-05-25
          相关资源
          最近更新 更多