Ionic 3:在“prod”模式下构建:找不到模块“。”

Posted

技术标签:

【中文标题】Ionic 3:在“prod”模式下构建:找不到模块“。”【英文标题】:Ionic 3: Build in “prod” mode: Cannot find module “.” 【发布时间】: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

谢谢!

【问题讨论】:

【参考方案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 从那时起你找到解决方案了吗?我无法降低打字稿版本

以上是关于Ionic 3:在“prod”模式下构建:找不到模块“。”的主要内容,如果未能解决你的问题,请参考以下文章

Ionic V4 - Build Prod “找不到 cordova.js 脚本标签。插件加载可能失败。”

Ionic 3 - 应用程序在使用 --prod 构建后显示空白屏幕但使用开发模式

带有角度 7 的 Ionic 4,找不到“@types”的类型定义文件

运行 ionic cordova build ios 时找不到包含的文件

如何在生产模式下构建 Ionic 应用程序,Ionic 构建的行为不同

离子 3 - 找不到 FirebaseInstanceID