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

时间:2018-06-06 06:21:48

标签: javascript angular ionic-framework ionic3

我们有一个很大的Ionic应用,我们在build模式下尝试production,因为它已经准备好了。我们发现的第一个问题是编译时我们遇到了“JavaScript堆内存不足”错误,但是我们通过给节点提供更多内存来修复它:

"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

谢谢!

5 个答案:

答案 0 :(得分:11)

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

count

将版本减少到int result = 0; int count = 0; for(int i = 0; i < s.length(); i++){ if(s.charAt(i) == c){ result += Integer.min(k + 1, count); count++; } } 为我修复了它。

答案 1 :(得分:4)

^@ionic/app-scripts中删除typescript对我来说如下:

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

答案 2 :(得分:1)

我遇到了类似的问题,但错误的typescript软件包是从其他依赖项目和VS Code的组合中获得的。我通过将^~完全版本(无@ionic/app-scriptstypescript)固定到我需要的位置来解决此问题。

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

答案 3 :(得分:1)

用新版本解决了这个错误,我检查了离子角导入,一切正常。

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

答案 4 :(得分:0)

对我来说,使用

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

如果您要使用Typescript v3,则可以尝试使用其他专用选项来构建禁用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