Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Я думаю, вы можете использовать поле «двигатели»:
{ "engines" : { "node" : ">=0.12" } }
Как вы говорите, ваш код определенно не будет работать с более низкими версиями, вы, вероятно, тоже захотите отметить флаг «engineStrict» :
{ "engineStrict" : true }
Документация для файла packages.json может быть найдена на сайте npmjs
Обновить
engineStrict
теперь устарела, поэтому это даст только предупреждение. Теперь пользователю нужно запустить npm config set engine-strict true
, если они этого захотят.
Как и сказал Ибам, engineStrict
теперь устарел. Но я нашел это решение:
check-version.js:
import semver from 'semver';
import { engines } from './package';
const version = engines.node;
if (!semver.satisfies(process.version, version)) {
console.log(`Required node version ${version} not satisfied with current version ${process.version}.`);
process.exit(1);
}
package.json:
{
"name": "my package",
"engines": {
"node": ">=50.9" // intentionally so big version number
},
"scripts": {
"requirements-check": "babel-node check-version.js",
"postinstall": "npm run requirements-check"
}
}
Узнайте больше здесь: https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4
.nvmrc
И еще одна вещь ... dotfile «.nvmrc» может использоваться для запроса определенной версии узла (но я еще не пробовал ее) - https: // github.com/creationix/nvm#nvmrc
Добавить
в package.json
"engines": {
"node": ">=10.0.0",
"npm": ">=6.0.0"
},
в файл .npmrc
(рядом с package.json
, тот же каталог)
engine-strict=true
Есть еще один, более простой способ сделать это:
npm install Node@8
(сохраняет Node 8 как зависимость в package.json) Это работает, потому что node
- это всего лишь пакет, который отправляет узел в виде бинарного пакета. Он просто включает в себя node_module / .bin, что означает, что он только делает узел доступным для пакетных скриптов. Не главная оболочка.
См. Обсуждение в Twitter здесь: https://twitter.com/housecor/status/962347301456015360
./node node-sass
, а не только node-sass
. Не уверен, что он одинаковый для всех .bin-файлов.
– Jon
10 August 2018 в 05:56
engineStrict
в течение нескольких месяцев была устаревшей , создавая предупреждения, когда он был использован. Начиная с npm @ 3, значение поля игнорируется, а нарушения двигателей будут вызывать предупреждения. Если вы, как пользователь, хотите строгое принудительное принудительное форматирование, просто запустите npm config set engine-strict true & quot; – Mike Stead 24 December 2015 в 03:22cd .. && npm i <folder-name>
, чтобы проверить сам проект. Однако это вызовет целую сборку в ней. – mlunoe 26 July 2016 в 23:20engine-strict=true
к вашему .npmrc теперь имеет тот же эффект – ben 13 June 2018 в 05:23