迁移到较新的本机脚本时遇到问题

时间:2019-12-20 11:20:38

标签: android exception nativescript

我目前正在将移动应用程序项目从nativescript 5.2.1更新到版本6。但是尝试运行它总是会触发此问题,而且我不确定如何处理

当我检查代码时,似乎它试图在vendor.js或pbkdf2 / lib / default-encoding.js中拆分global.process.version或process.version

An uncaught Exception occurred on "main" thread.
Unable to create application com.tns.NativeScriptApplication: com.tns.NativeScriptException: Error calling module function 
TypeError: Cannot read property 'split' of undefined
File: (file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:142790:54)

StackTrace: 
../node_modules/pbkdf2/lib/default-encoding.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:142790:55)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ../node_modules/pbkdf2/lib/sync.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:142852:23)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ../node_modules/pbkdf2/index.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:142658:24)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ../node_modules/crypto-browserify/index.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:58549:9)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ./global/functions.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:22025:64)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ./global/init.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:22311:68)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at (file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:20643:70)
    at ./app.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:20701:30)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at checkDeferredModules(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:44:23)
    at webpackJsonpCallback(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:31:19)
    at (file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:2:57)
    at require(:1:266)


TypeError: Cannot read property 'split' of undefined

StackTrace:
java.lang.RuntimeException: Unable to create application com.tns.NativeScriptApplication: com.tns.NativeScriptException: Error calling module function 
TypeError: Cannot read property 'split' of undefined
File: (file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:142790:54)

StackTrace: 
../node_modules/pbkdf2/lib/default-encoding.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:142790:55)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ../node_modules/pbkdf2/lib/sync.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:142852:23)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ../node_modules/pbkdf2/index.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:142658:24)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ../node_modules/crypto-browserify/index.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:58549:9)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ./global/functions.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:22025:64)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ./global/init.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:22311:68)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at (file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:20643:70)
    at ./app.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:20701:30)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at checkDeferredModules(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:44:23)
    at webpackJsonpCallback(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:31:19)
    at (file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:2:57)
    at require(:1:266)


TypeError: Cannot read property 'split' of undefined
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6318)
    at android.app.ActivityThread.access$1300(ActivityThread.java:229)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1867)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:226)
    at android.app.ActivityThread.main(ActivityThread.java:7212)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:956)
Caused by: com.tns.NativeScriptException: Error calling module function 
TypeError: Cannot read property 'split' of undefined
File: (file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:142790:54)

StackTrace: 
../node_modules/pbkdf2/lib/default-encoding.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:142790:55)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ../node_modules/pbkdf2/lib/sync.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:142852:23)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ../node_modules/pbkdf2/index.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:142658:24)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ../node_modules/crypto-browserify/index.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/vendor.js:58549:9)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ./global/functions.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:22025:64)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at ./global/init.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:22311:68)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at fn(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:121:20)
    at (file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:20643:70)
    at ./app.js(file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:20701:30)
    at __webpack_require__(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:751:30)
    at checkDeferredModules(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:44:23)
    at webpackJsonpCallback(file:///data/data/com.ikredo.ikredolenderapp/files/app/runtime.js:31:19)
    at (file:///data/data/com.ikredo.ikredolenderapp/files/app/bundle.js:2:57)
    at require(:1:266)


TypeError: Cannot read property 'split' of undefined
    at com.tns.Runtime.runModule(Native Method)
    at com.tns.Runtime.runModule(Runtime.java:674)
    at com.tns.Runtime.run(Runtime.java:666)
    at com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21)
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6313)
    ... 8 more


试图克服“请添加更多详细信息”,很抱歉,看起来不专业,但我无法描述更多详细信息

编辑: 这是我的package.json

{
  "nativescript": {
    "id": "com.xxxx",
    "tns-ios": {
      "version": "6.0.1"
    },
    "tns-android": {
      "version": "6.0.0"
    }
  },
  "description": "Lender",
  "license": "SEE LICENSE IN <your-license-filename>",
  "repository": "<fill-your-repository-here>",
  "dependencies": {
    "axios": "^0.18.0",
    "lodash": "^4.17.11",
    "moment": "^2.24.0",
    "nativescript-background-http": "^3.4.0",
    "nativescript-camera": "^4.5.0",
    "nativescript-cardview": "^3.1.1",
    "nativescript-carousel": "^4.1.0",
    "nativescript-checkbox": "^3.0.3",
    "nativescript-clipboard": "^1.2.0",
    "nativescript-datetimepicker": "^1.0.2",
    "nativescript-drop-down": "^5.0.0",
    "nativescript-fingerprint-auth": "^6.2.0",
    "nativescript-imagepicker": "^6.1.2",
    "nativescript-iqkeyboardmanager": "^1.4.0",
    "nativescript-loading-indicator": "^2.4.0",
    "nativescript-lottie": "^3.0.2",
    "nativescript-material-bottomsheet": "^2.2.5",
    "nativescript-material-ripple": "^2.2.5",
    "nativescript-material-textfield": "^2.2.3",
    "nativescript-pager": "^9.4.0",
    "nativescript-pdf-view": "^2.0.1",
    "nativescript-plugin-firebase": "9.0.2",
    "nativescript-pulltorefresh": "^2.3.0",
    "nativescript-sqlite": "^2.3.3",
    "nativescript-statusbar": "^5.0.0",
    "nativescript-theme-core": "~1.0.4",
    "nativescript-vue": "2.3.0",
    "nativescript-web-image-cache": "^5.0.0",
    "tns-core-modules": "6.0.1",
    "typescript": "^3.7.3"
  },
  "devDependencies": {
    "@babel/core": "~7.1.0",
    "@babel/preset-env": "~7.1.0",
    "babel-loader": "~8.0.0",
    "nativescript-dev-webpack": "1.0.1",
    "nativescript-vue-template-compiler": "2.3.0",
    "node-sass": "4.12.0",
    "vue-loader": "~15.4.0",
    "tns-platform-declarations": "6.0.1"
  },
  "gitHead": "xxx",
  "readme": "NativeScript Application",
  "maxLogcatObjectSize": 1000000
}

2 个答案:

答案 0 :(得分:0)

在某个地方,“某物”正在尝试对不存在或尚未初始化的字符串执行split。我不能说,“我碰到了这个确切的问题,这就是解决方案。”但是,在更新项目依赖项时,我肯定遇到了一些……有趣的问题。我的第一个猜测是您的webpack.config.js需要更新以匹配新的依赖项。但这不只是一种直觉,还是一个起点。

因此,有些事情可能会[或可能不会]有帮助。现在,无论何时更新依赖关系,我都会经历这些分类点:

  • 运行tns doctor,查看它是否对任何现有依赖项有任何看法
  • 从NativeScript 6.3.0开始,不再需要使用较旧的tns-core-modules/。而是使用@nativescript/core/。如果您使用的是较旧的,向后兼容的模块,请确保它们的版本也已更新(tns-core-modulestns-platform-declarations)。
  • 更新依赖关系时,我还删除了webpack.config.js文件,以便NativeScript可以生成新的当前版本。 tns update似乎没有更新Webpack配置。最多在构建时会在数百行控制台输出中发出警告。在删除Webpack配置并允许NativeScript生成新配置后,GitHub显示了旧版本/新版本之间的一些显着差异。
  • 彻底清理项目:清空或删除node_modules文件夹,然后运行tns platform clean androidtns platform clean ios

希望这对您有所帮助。祝你好运!

答案 1 :(得分:0)

var process = require('process');的顶部添加default-encoding.js,而_stream_writable.js为我修复了该问题。