我想从我的graphql
定义中清除Node的缓存,但在我对require('my.graphql')
语句所在的文件进行更改之前没有任何反应。我认为这个问题与this one有关,我试图这样做:
Object.keys(require.cache).forEach(function(key) {
delete require.cache[key];
});
但它不会重新加载代码。必须有一些我想念的其他缓存。
由于示例有点长,我已经分叉了这个repo并创建了一个graphql-branch,你可以安装和测试适应src/schema.graphql
文件:
git clone [email protected]:gforge/graphql-relay-mongodb-pagination.git
cd graphql-relay-mongodb-pagination
git checkout git checkout mongoose-w-gql-lang
npm install
require('my.graphql')
是通过babel-plugin-inline-import介导的。
事实证明问题实际上是Babel's cache而不是Node。在package.json中更改开头:
...
"start": "babel-node ./src/index.js",
至
...
"start": "BABEL_DISABLE_CACHE=1 babel-node ./src/index.js",
解决了这个问题。
巴贝尔文档建议
BABEL_CACHE_PATH=/foo/my-cache.json babel-node script.js # default in /tmp/
BABEL_DISABLE_CACHE=1 babel-node script.js
require('babel-register')({ cache: false });
但是在IntelliJ中进行调试时,这在Windows 7上不起作用。经过大量的谷歌搜索,我发现它真正存在的地方
C:\Users\username\.babel.json
%USERPROFILE%\.babel.json
$USERPROFILE/.babel.json # cygwin
您可以在package.json中添加一个脚本来为您执行此操作
{
"scripts": {
"clean": "del %USERPROFILE%/.babel.json",
"clean": "bash -c 'rm -vf $USERPROFILE/.babel.json'"
}
}
如果您使用webpack,您可以动态地将cacheDirectory:参数注入.babelrc文件以便于删除
如果将babel-node直接添加到文件中,则会抛出错误
webpack.config.js
const _ = require('lodash');
const JSON5 = require('json5');
const babelrc = _.extend(
// WARNING: ./.babel-cache/ may occasionally get corrupted and need "npm run clean"
// POSITIVE: ./.babel-cache/ provides a ~30% speed increase in recompile times
{ cacheDirectory: !argv.production && './.babel-cache' },
JSON5.parse(fs.readFileSync('./.babelrc'))
);