如果我有应用程序的源代码以及 macOS 和 Windows 安装程序,我如何才能找到用于构建应用程序的 Node.js 版本?
Posted
技术标签:
【中文标题】如果我有应用程序的源代码以及 macOS 和 Windows 安装程序,我如何才能找到用于构建应用程序的 Node.js 版本?【英文标题】:if I have source code and macOS and Windows installers for an app, how can I find what version of Node.js was used to build the app? 【发布时间】:2020-08-22 05:15:44 【问题描述】:我需要构建一个新版本的 javascript Node.js
应用程序。我有该应用早期版本的源代码以及 macOS 和 Windows 安装程序。
我怎样才能找到 Node.js
的哪个版本用于构建以前版本的应用程序,以便我可以使用相同的Node.js
版本来构建我的新版本的应用程序?
我了解在构建 macOS 版本和 Windows 版本时,Node.js
的版本可能不同。理想情况下,我想知道每个平台使用的Node.js
的哪个版本,但如果我能获得至少一个就足以满足我的需求。
更新: 包.json:
"name": "LiteracyStarter",
"description": "Literacy Starter",
"version": "0.60.1",
"activated": true,
"private": true,
"main": "./build/LiteracyStarter.html",
"nodejs": true,
"chromium-args": "--disable-web-security",
"window":
"toolbar": true,
"width": 1260,
"height": 750,
"icon": "./images/LiteracyStarterIcon.png",
"show": false
,
"dependencies":
"archiver": "^2.1.1",
"arraybuffer-to-buffer": "0.0.4",
"babel-plugin-transform-object-rest-spread": "^6.23.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-polyfill": "^6.23.0",
"cf-encrypt": "^1.0.0",
"cli-spinner": "^0.2.6",
"co": "^4.6.0",
"co-fs": "^1.2.0",
"co-fs-extra": "^1.2.1",
"d3-dsv": "^1.0.7",
"decompress-zip": "^0.3.0",
"dexie": "^1.5.1",
"esrever": "^0.2.0",
"form-data": "^2.2.0",
"fs-extra": "^0.23.1",
"fs-extra-promise": "^1.0.1",
"fstream": "^1.0.11",
"image-size": "^0.3.5",
"is-online": "^5.2.0",
"jssha": "^2.3.1",
"jszip": "^2.6.1",
"lodash": "^3.10.1",
"markdown-it": "^8.3.1",
"memoizejs": "^0.1.1",
"moment": "^2.18.1",
"parse-error": "^0.2.0",
"portscanner": "^1.2.0",
"promise-alert": "^0.1.1",
"promisify-node": "^0.4.0",
"pseries": "^1.0.3",
"quill": "^0.20.1",
"react": "^15.6.1",
"react-addons-perf": "^15.4.2",
"react-dom": "^15.6.1",
"read-json-stream": "^1.1.0",
"redux": "^3.7.2",
"request": "^2.81.0",
"rimraf": "^2.6.1",
"rmrf-promise": "^1.1.0",
"simple-sort": "^0.1.2",
"socket.io": "^1.7.4",
"socket.io-client": "^1.7.4",
"socket.io-stream": "^0.9.1",
"superagent": "^1.8.5",
"sweetalert": "^1.1.3",
"system-font-families": "^1.0.0",
"ttfinfo": "^0.2.0",
"unzip": "^0.1.11",
"uuid": "^3.1.0",
"webpack": "^3.8.1",
"workerjs": "^0.1.1",
,
"optionalDependencies":
"appdmg": "^0.4.5"
,
"devDependencies":
"babel-cli": "^6.6.5",
"babel-core": "^6.7.0",
"babel-loader": "^6.2.4",
"babel-plugin-syntax-async-functions": "^6.13.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.18.0",
"babel-preset-es2015": "^6.6.0",
"babel-preset-react": "^6.5.0",
"babel-register": "^6.9.0",
"colors": "^1.1.2",
"eslint": "^2.13.1",
"eslint-plugin-react": "^4.3.0",
"express": "^4.13.1",
"grunt": "^0.4.5",
"grunt-babel": "^6.0.0",
"grunt-cli": "^1.3.2",
"grunt-contrib-copy": "^0.8.0",
"grunt-contrib-cssmin": "^0.12.3",
"grunt-contrib-requirejs": "^0.4.4",
"grunt-contrib-uglify": "^0.8.0",
"grunt-contrib-watch": "^0.6.1",
"grunt-nw-builder": "^3.1.0",
"grunt-sloc": "^0.6.0",
"grunt-webpack": "^3.0.2",
"mocha": "^2.2.4",
"nw-builder": "^3.1.0",
"react-tools": "^0.13.3",
"requirejs": "^2.1.17",
"s3": "^4.4.0",
"should": "^8.4.0",
"single-line-log": "^1.1.2",
"underscore.string": "^3.0.3"
,
"scripts":
"start": "cd build && nw .",
"dev-start": "cd build && NODE_ENV=development nw . --load-extension=../../react-devtools",
"build": "npm install && bower install && grunt build && cd build && npm install --production",
"build-native": "node build-native.js",
"localization-helper": "cd localizationHelper && http-server",
"code-generator": "node ./code-generator/code-generator.js",
"generate-docs": "jsdoc app-node -r -d docs-node && jsdoc app-client/js -r -d docs-client",
"watch-node": "babel app-node --watch --out-dir build/app-node",
"watch-client": "webpack --watch --progress",
"watch-all": "grunt watch",
"compile-setup-scripts": "node compile-setup-scripts.js",
"comment": "For node 10.x, we have to add git-core to the PATH when we run win-complete-build. See https://github.com/appveyor/ci/issues/2420 for an example.",
"win-complete-build": "PATH=%PATH%;C:\\Program Files\\Git\\mingw64\\libexec\\git-core && npm run build && npm run build-native && npm run compile-setup-scripts",
"test-sy-utils": "mocha --compilers js:babel-register ./test/sy-utils-tests.js",
"test-flashcards": "mocha --compilers js:babel-register ./test/flashcard-generator-tests.js",
"build-native-linux": "cd build-native/LiteracyStarter/linux64/ && node-deb -- **"
,
"cutoffDate": "",
"preLiteracyVersion": "0.20.2",
"id": "47479c35-18d9-4265-ad85-af5a73080450"
【问题讨论】:
为什么在这种情况下需要 Node.js 版本?为什么你不能只使用任何有效的 Node 版本?节点是否也捆绑为应用程序的一部分? 升级到新版本的 Node 可能会破坏应用程序中的某些内容。我宁愿现在避免对应用程序中的所有内容进行彻底的手动重新测试(它很大而且很复杂)。Node.js
向后兼容。只要您的源代码中有package.json
,其中包含所有正确的版本。这应该不是 NodeJS 版本的问题
Node.js 确实弃用了 API 并最终将其删除(例如,nodejs.org/api/deprecations.html)。我担心我们的代码可能使用了现在已被删除的 API,或者可能依赖于 Node.js 中的错误,该错误已在更高版本的 Node.js 中修复。
你能不能发一下你的package.json
至少看看有没有可能的推荐
【参考方案1】:
Node.js 不与应用程序的源代码捆绑在一起。 package.json
可能有一个名为 "engines"
的部分,其中将说明您应该使用的版本。
如果根package.json
没有"engines"
部分,那么某些依赖项可能会说明它们需要使用哪个版本。逐个检查会有点烦人,所以一个好方法就是下载一个版本的 Node 并运行npm install
。如果一切正常,那么您知道创建应用程序的 Node 版本很可能是旧版本(我知道这有点乏味)。
您可以寻找的另一件事(但可能没有帮助)是检查源代码文件的创建时间(尤其是 package.json
文件),并找到大约在那个时间发布的 Node 版本.这不会像第一种方法那样准确,但它会给你一个 Node 的工作版本。
归根结底,最好使用最新版本(或最新的 LTS 版本),因为它们附带所有最新的安全补丁和改进。
【讨论】:
以上是关于如果我有应用程序的源代码以及 macOS 和 Windows 安装程序,我如何才能找到用于构建应用程序的 Node.js 版本?的主要内容,如果未能解决你的问题,请参考以下文章
通过二维码在WindowsmacOSLinux桌面和移动设备之间传输文件
最新的 macOS 版本 10.15.4 声称代码签名对客户无效