NativeScript / NativeScript/android
Mirgation Issue: 6.5 > 8.5 | Launch fails: 'env' not defined
还没有人认领这个 Issue。
- 主要语言
- C++
- 星标
- 563
- 派生
- 144
- 平均合并
- 10 小时 46 分钟
- 30 天内合并 PR
- 14
描述
Environment
Provide version numbers for the following components (information can be retrieved by running tns info in your project folder or by inspecting the package.json of the project):
- CLI: 8.5.7
- Cross-platform modules:
- Android Runtime: 8.5.0
- iOS Runtime (if applicable):
- Plugin(s):
Describe the bug
The project builds successfully, but crashes on launch with this error:
"An uncaught Exception occurred on "main" thread.
Unable to create application com.tns.NativeScriptApplication: com.tns.NativeScriptException: Error calling module function
TypeError: Cannot read properties of undefined (reading 'env')
File: (file: app/webpack:/com.app.game/webpack/bootstrap:27:0)"
StackTrace:
./node_modules/util/util.js(file: app/webpack:/com.app.game/node_modules/util/util.js:109:11)
at webpack_require(file: app/webpack:/com.app.game/webpack/bootstrap:24:0)
at fn(file: app/webpack:/com.app.game/webpack/runtime/hot module replacement:62:0)
at ./node_modules/console-browserify/index.js(file: app/webpack:/com.app.game/node_modules/console-browserify/index.js:2:11)
at webpack_require(file: app/webpack:/com.app.game/webpack/bootstrap:24:0)
at fn(file: app/webpack:/com.app.game/webpack/runtime/hot module replacement:62:0)
at ./node_modules/@nativescript/core/data/observable/index.js(file:///data/data/com.app.game/files/app/vendor.js:6780:41)
at webpack_require(file: app/webpack:/com.app.game/webpack/bootstrap:24:0)
at fn(file: app/webpack:/com.app.game/webpack/runtime/hot module replacement:62:0)
at ./node_modules/@nativescript/core/globals/index.js(file:///data/data/com.app.game/files/app/vendor.js:10525:74)
at webpack_require(file: app/webpack:/com.app.game/webpack/bootstrap:24:0)
at webpack_exec(file:///data/data/com.app.game/files/app/bundle.js:29616:39)
at (file:///data/data/com.app.game/files/app/bundle.js:29617:71)
at webpack_require.X(file: app/webpack:/com.app.game/webpack/runtime/startup entrypoint:6:0)
at (file:///data/data/com.app.game/files/app/bundle.js:29617:47)
at (file:///data/data/com.app.game/files/app/bundle.js:29622:3)
at require(:1:266)
Package.json
{
"name": "com.app.game",
"version": "1.0.0",
"description": "NativeScript vue client",
"author": "test",
"license": "MIT",
"nativescript": {
"id": "com.app.game"
},
"dependencies": {
"@nativescript/core": "~8.5.0",
"@nativescript/payments": "^1.0.6",
"@nativescript/theme": "~3.0.2",
"axios": "^0.21.1",
"nativescript-numeric-keyboard": "~5.0.2",
"nativescript-signalr-core": "^2.0.0",
"nativescript-theme-core": "^2.0.24",
"nativescript-ui-chart": "~15.2.3",
"nativescript-ui-core": "~15.2.3",
"nativescript-ui-listview": "~15.2.3",
"nativescript-ui-sidedrawer": "~15.2.3",
"nativescript-vue": "^2.6.4",
"nativescript-websockets": "~2.0.0",
"next": "^13.4.7",
"node-polyfill-webpack-plugin": "^2.0.1",
"sass": "~1.49.9",
"vuex": "^3.3.0"
},
"devDependencies": {
"@babel/core": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@nativescript/android": "^8.5.0",
"babel-loader": "^8.1.0",
"nativescript-vue-template-compiler": "^2.6.0",
"sass": "~1.49.9",
"vue-loader": "^15.9.1",
"@nativescript/webpack": "~5.0.0"
},
"main": "./app/main.js"
}
WebPack
const webpack = require("@nativescript/webpack");
const NodePolyfillPlugin = require("node-polyfill-webpack-plugin")
module.exports = (env) => {
webpack.init(env);
webpack.chainWebpack(config => {
// we add the plugin
config.plugin('node-polyfill-webpack-plugin').use(NodePolyfillPlugin)
})
return webpack.resolveConfig()
};
Additional context
- I know axios and a couple of other packages are not up to date and use the util.js which could be where the issue is. However, I removed those packages & references to them which resulted in the same error.
- I also added the polyfill package in webpack config so I don't think it is a polyfill issue?
- I have looked at SO questions, reported issues, etc. without any progress. Any help would be appreciated.
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先,使用提供的 NativeScript 版本复现 Android 启动失败,并检查自定义 webpack 配置,尤其是 NodePolyfillPlugin 的设置。跟踪报告的路径,依次经过 node_modules/util/util.js、webpack/bootstrap、console-browserify 和 @nativescript/core;完成的标准是构建后的应用能够启动且不出现 undefined env exception。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- android, javascript, webpack
- 领域
- build-system, mobile
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100